larave5.1l队列

官方文档http://laravel.com/docs/5.1/queues#dealing-with-failed-jobs

1、队列容器设置为数据库

  config/queue.php

‘default‘ => env(‘QUEUE_DRIVER‘, ‘database‘),

2、建立队列和失败队列数据库

php artisan queue:table
php artisan queue:failed-table
php artisan migrate

3、创建队列SendReminderEmail

php artisan make:job SendReminderEmail --queued
<?php

namespace App\Jobs;

use App\User;
use App\Jobs\Job;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Bus\SelfHandling;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Support\Facades\Mail;
use Exception;

class SendReminderEmail extends Job implements SelfHandling, ShouldQueue
{
    use InteractsWithQueue, SerializesModels;

    protected $user;

    public function __construct(User $user)
    {
        $this->user = $user;
    }
    public function handle()
    {
       $user = $this->user;
        $url = route(‘confirmation‘, [‘token‘ => $user->registration_token]);
        Mail::send(‘emails/registration‘, compact(‘user‘, ‘url‘), function ($m) use ($user) {
            $m->to($user->email, $user->name)->subject(‘test!‘);
        });
       // throw new Exception;   //异常可使队列失败
    }
}

4、发送队列

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;

use App\User;
use App\Jobs\SendReminderEmail;

class JobsController extends Controller
{
   public function testSendJobs(){
       $user = User::findOrFail(1);
       $this->dispatch(new SendReminderEmail($user));

   }
}

5、开启队列监听

php artisan queue:listen database --tries=3  //监听数据库容器的队列,3次执行失败,则将队列放到失败队列数据库表

6、处理失败队列

php artisan queue:failed //列出失败队列
php artisan queue:retry 1  //将id=1的失败队列恢复到队列表
时间: 2024-08-09 09:26:01

larave5.1l队列的相关文章

Java-No.14 基于redis分布式缓存队列实现抢红包功能

package com.shma.util; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; public class ObjectUtil {      /**对象转byte[]      * @par

Zookeeper分布式队列的实现

摘要:本文要通过zookeeper实现一个简单可靠的分布式队列 本文源码请在这里下载:https://github.com/appleappleapple/DistributeLearning 一.队列 Zookeeper可以处理两种类型的队列:(1)同步队列当一个队列的成员都聚齐时,这个队列才可用,否则一直等待所有成员到达.例如一个班去旅游,看是否所有人都到齐了,到齐了就发车.例如有个大任务分解为多个子任务,要所有子任务都完成了才能进入到下一流程.(2)先进先出队列按照FIFO方式进行入队和出

redis分布式锁和消息队列

最近博主在看redis的时候发现了两种redis使用方式,与之前redis作为缓存不同,利用的是redis可设置key的有效时间和redis的BRPOP命令. 分布式锁 由于目前一些编程语言,如PHP等,不能在内存中使用锁,或者如Java这样的,需要一下更为简单的锁校验的时候,redis分布式锁的使用就足够满足了.redis的分布式锁其实就是基于setnx方法和redis对key可设置有效时间的功能来实现的.基本用法比较简单. public boolean tryLock(String lock

GuozhongCrawler实现的基于redis的队列

GuozhongCrawler的分布式爬虫还在开发当中.作者首先爆出GuozhongCrawler实现的基于redis的队列,提供大家写其他分布式爬虫的参考. package com.guozhong.queue; import com.guozhong.request.BasicRequest; /** * 线程安全的可阻塞式队列接口 * @author 郭钟 * @QQ群 202568714 * */ public interface BlockingRequestQueue { /** *

利用C#队列集合(Queue)写的一个算法

C#队列集合类在工作当中很少用到,昨天偶然听到同学工作时的一个需求(资源重新平均分配,但自己的资源不能分配给自己),我自己想了想,也查了查,感觉有必要用下队列Queue,这样实现起来比较简单些. 一下是实现的代码: System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch(); stopwatch.Start(); Dictionary<long, List<long>> map = new

RabbitMq+Spring boot 消息生产者向队列发送消息 (一)

本人学习新框架方法. 一.先学习框架基本知识,也就是看这本书的前三章,了解基本概念.比如这个Rabbitmq,我会先看一些概念,比如,交换机,路由器,队列,虚拟机. 二.然后写代码,写demo,有哪些不懂的地方直接再去翻书或者google找资料,带着问题去学习,学的更快更扎实一些. 三.然后再看这个框架的应用场景,自己能否独立的写一些简单的项目,来验证自己的成果. 四.实际项目积累经验. RabbitMq 消息生产者向队列发送消息 (一) MQ分为消息生产者和消息消费者,这次做的主要是消息的生产

Java Mail + 消息队列 高效率发送邮件

本文主要是讲述JavaMail 和 消息队列的一些简单应用,这是第一次写博客,有很多不足的地方希望各位看客给出宝贵建议,另外本文写的不对的地方,请各位大神勿喷!!! 很多人都会在各个系统里面遇到发送邮件的功能,这次开博写文章也是在整理过程中发现,团队中有个新来的小童鞋对发送邮件这块不是很熟,所以自己准备写一个简单的样例. 这里加了一个消息队列主要是用于高并发的情况下,对邮件发送的控制,并可以对消息进行缓存,防止消息丢失. 话不多说直接上代码: 用maven对项目进行的管理,pom.xml <de

Redis分布式队列和缓存更新

原文链接:https://www.cnblogs.com/hua66/p/9600085.html 在使用Redis中,我们可能会遇到以下场景: 例如: 某用户向服务器中发送一个请求,服务器将用户请求加入Redis任务队列,任务完成则移出队列. 以上场景有几点疑问: Redis队列中数据如果不仅仅来自于我们的应用程序,那么我们怎么把这个数据加入Redis? 当Redis队列中用户的请求达程序所能处理的峰值.那么我们该如何处理这些用户请求? 解决方案: 对外提供接口,将请求数据添加至DB.启动一个

ArrayBlcokingQueue,LinkedBlockingQueue与Disruptor三种队列对比与分析

一.基本介绍 ArrayBlcokingQueue,LinkedBlockingQueue是jdk中内置的阻塞队列,网上对它们的分析已经很多,主要有以下几点: 1.底层实现机制不同,ArrayBlcokingQueue是基于数组的,LinkedBlockingQueue是基于链表的: 2.初始化方式不同,ArrayBlcokingQueue是有界的,初始化时必须指定队列的大小:LinkedBlockingQueue可以是无界的,但如果初始化时指定了队列大小,也可以做为有界队列使用: 3.锁机制实