我一直在laravel伪造的配置服务器上运行一个应用程序。我们有一些已排队的电子邮件作业,我们使用Horizon来管理队列。这总是没有任何问题,但由于某种原因,我们打破了一些问题,我无法修复它。
这是我们的设置。
.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/horizon.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
当我访问/地平线/仪表板时,一切都可以正常运行。我在为排队工作的有效载荷添加一些元数据时,我正在玩一些元数据,此时问题开始了。然后,我再次删除了该代码,基本上返回了上一个代码库。没有区别了,所以我现在怀疑我还有另一个问题。
但是 - 当我在队列中添加一些东西时,我没有得到任何例外。Bugsnag没有新的条目,我的过程只是持续而没有任何错误。
知道我可以验证更多的问题以检测实际问题吗?配置有问题吗?老实说,我有点迷路了,尤其是因为我没有信息可以使用:(
我还使用Tinker检查了是否可以与Redis建立连接,并且在没有例外的情况下也可以正常工作:
$ php artisan tinker
Psy Shell v0.9.9 (PHP 7.2.0RC3 — cli) by Justin Hileman
>>> IlluminateSupportFacadesRedis::connection('default')
=> IlluminateRedisConnectionsPredisConnection {#3369}
此问题的原因是我对此进行了测试的通知确实使用了Queuuable性状,但并未实现Quaryqueue接口。后者必须自动排队这些通知。
我们开始使用其他通知良好的通知进行测试时注意到了。
我们仍然遇到的唯一问题是,我们本来可以期望该电子邮件出现,因为它会同步发送,这是由于某些原因没有。