Laravel视野:物品不再无故排队

时间:2019-05-06 19:41:02

标签: laravel redis laravel-queue laravel-horizon

我一直在Laravel伪造的预配置服务器上运行一个应用程序。 我们有一些正在排队的电子邮件作业,我们使用Horizo​​n来管理队列。这始终没有任何问题,但是由于某种原因,我们已经损坏了某些东西,而我无法修复。

这是我们的设置。

.env

APP_ENV=dev
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
QUEUE_DRIVER=redis

config / queues.php

 return [
   'default' => env('QUEUE_DRIVER', 'sync'),
   'connections' => [
     'sync' => [
       'driver' => 'sync',
     ]
     'redis' => [
       'driver' => 'redis',
       'connection' => 'default',
       'queue' => 'medium',
       'retry_after' => 90,
     ],
  ],
];

config / horizo​​n.php

return [
  'use' => 'default',
  'waits' => [
    'redis:default' => 60,
  ],
  'environments' => [
    'dev' => [
      'high-prio' => [
        'connection' => 'redis',
        'queue' => ['high'],
        'balance' => 'simple',
        'processes' => 10,
        'tries' => 5,
      ],
      'default-prio' => [
        'connection' => 'redis',
        'queue' => ['medium', 'low'],
        'balance' => 'auto',
        'processes' => 10,
        'tries' => 3,
      ],
    ],
  ],
];

我检查了redis-cli信息结果,以确保端口正确:

forge@denja-dev:~$ redis-cli info
# Server
redis_version:3.2.8
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:11aa79fd2425bed9
redis_mode:standalone
os:Linux 4.4.0-142-generic x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:5.4.0
process_id:1191
run_id:fcc57fa2c17440ab964538c2d986dc330d9e1223
tcp_port:6379
uptime_in_seconds:3045
uptime_in_days:0
hz:10
lru_clock:13667343
executable:/usr/bin/redis-server
config_file:/etc/redis/redis.conf

当我访问/ horizo​​n / dashboard时,一切运行良好。 我在将一些元数据添加到队列作业的有效负载中时有点玩,那时问题开始了。然后,我再次删除了该代码,基本上回到了以前的代码库。不再有任何区别,所以我现在怀疑我还有另一个问题。

但是-当我向队列中添加内容时,没有抛出任何异常。 Bugsnag没有新条目,我的过程继续进行,没有任何错误。

您知道我可以进行更多验证以检测实际问题吗?配置有问题吗?老实说,我有点失落,尤其是因为我没有信息可以使用:(

我还使用修补匠检查了是否可以与Redis建立连接,并且也可以正常工作:

$ php artisan tinker
Psy Shell v0.9.9 (PHP 7.2.0RC3 — cli) by Justin Hileman
>>> Illuminate\Support\Facades\Redis::connection('default')
=> Illuminate\Redis\Connections\PredisConnection {#3369}

1 个答案:

答案 0 :(得分:0)

此问题的原因是,我对此进行测试的通知确实使用了Queuable特性,但没有实现ShouldQueue接口。后者需要Laravel自动将这些通知排队。

当我们开始使用其他可以正常运行的通知进行测试时,我们注意到了。

我们仍然唯一的问题是我们仍然希望电子邮件能够发送出去,因为它将同步发送,由于某种原因,它没有发送。