什么是Laravel队列连接和onQueue方法?

时间:2016-12-25 10:14:35

标签: php laravel laravel-5

我刚刚读完了关于队列的laravel文档,我不明白某些事情。

  1. 这些队列连接是什么?
    他们做了什么? ' beanstalkd'有什么区别? ,' sqs',' iron'和' redis' ?

  2. onQueue方法的作用是什么? 我读到你可以使用命名队列,tou可以对工人进行分类,但工人是什么? jon班?
    它有什么好处?

1 个答案:

答案 0 :(得分:1)

我们知道的排队遵循先入/先出术语。这意味着排队第一的人应该首先得到照顾。它们通常通过控制台/外壳在后台运行。

这些队列连接是什么?

因此,需要存储用于处理队列的条目的数据库/存储引擎。如今,人们通常使用 redis site)或 sqs (由Amazon Web Services提供的服务)作为这些数据库/存储引擎之一。< / p>

在Laravel中,我们有队列驱动程序,它存储连接到这些数据库/存储引擎的必要详细信息(如主机名,端口号,用户名,密码)。

onQueue方法有什么作用?

OnQueue方法在Queueable trait (\ Illuminate \ Bus \ Queueable.php)中定义,用于指定特定作业/事件的队列必须被推到。

基本上,当你去config/queue.php时,你会找到一个连接数组。有点像...

'redis' => [
  'driver' => 'redis',
  'connection' => 'default',
  'queue' => 'default',
  'expire' => 60,
],

它的第二个最后一个元素是queue,它用于命名该特定连接的队列。通过使用不同的队列名称,可以并行化您的作业/事件,并在不同的队列连接上运行它们,以加快处理速度。

因此,一个队列可用于发送邮件,另一个队列可能用于检查数据库中的某些内容,然后根据输出将数据存储到缓存中。

另外,在你再问问题之前,我建议你自己尝试一下。您可以从redis开始并将其安装在本地计算机上。完成后,您可以通过redis-server命令启动它,然后在laravel项目中通过php artisan queue:listen命令从队列中运行。