Supervisord混淆了配置文件中的两个程序

Supervisord get confused two programs in configuration file

我有两个 laravel 5.1 应用程序,它们使用 beanstalkdsupervisord 来管理队列作业。

supervisord.conf 文件有两个程序定义为

[program:diagbovespa-default-queue]
command=php artisan queue:listen --tries=2 --env=aceite
process_name=%(program_name)s_%(process_num)02d
directory=/sciere/sites/diagbovespa.aceite.pro.br
numprocs=2
user=apache
redirect_stderr=true
autostart=true
autorestart=true
stdout_logfile=/sciere/sites/diagbovespa.aceite.pro.br/storage/logs/queue_supervisord.log

[program:questionarioise-default-queue]
command=php artisan queue:listen --tries=2 --env=aceite
process_name=%(program_name)s_%(process_num)02d
directory=/sciere/sites/questionarioise.aceite.pro.br
numprocs=2
user=apache
redirect_stderr=true
autostart=true
autorestart=true
stdout_logfile=/sciere/sites/questionarioise.aceite.pro.br/storage/logs/queue_supervisord.log

diagbovespa 应用程序的 queue.php 文件已将 beanstalkd 定义为

    'beanstalkd' => [
        'driver' => 'beanstalkd',
        'host'   => 'localhost',
        'queue'  => 'default',
        'ttr'    => 60,
    ],

并且 queue.php questionarioise 应用程序 beanstalkd 定义为

    'beanstalkd' => [
        'driver' => 'beanstalkd',
        'host'   => 'localhost',
        'queue'  => 'questionarioise',
        'ttr'    => 60,
    ],

所以 beanstalkd 考虑两个队列组,defaultquestionarioise

问题是,当我通过 laravel 默认队列 (program:diagbovespa-default-queue) 发送电子邮件时,有时我会收到来自 diagbovespa 的电子邮件,有时会收到来自 questionarioise 的电子邮件.

我在 supervisord and/or beanstalkd 配置中缺少什么?

您的队列工作人员没有指定队列名称,因此他们将选择具有任何队列标签的任何作业。

在您的配置中,您有 'queue' => 'default''queue' => 'questionarioise'。您需要更新您的队列工作人员以仅侦听和处理这些工作:

[program:diagbovespa-default-queue]
command=php artisan queue:listen --tries=2 --env=aceite --queue=default

并且:

[program:questionarioise-default-queue]
command=php artisan queue:listen --tries=2 --env=aceite --queue= questionarioise

虽然我建议将第一个队列名称从 default 更改为更具体的名称,例如 diagbovespa,并在 supervisord 中也使用它。