I'm trying to use multiple consumers with the same Redis transport using the Symfony Messenger component. As mentioned in the Symfony guide, we can have problems if we use the same values for stream/group/messenger, cause the same message can be handled by multiple consumers. So I have updated my supervisor config as follow:
environment=MESSENGER_CONSUMER_NAME=%(program_name)s_%(process_num)02d
Then, I have updated my messenger.yaml file as follow:
redis:
dsn: '%env(MESSENGER_TRANSPORT_REDIS)%'
options:
consumer: '%env(MESSENGER_CONSUMER_NAME)%'
I have reloaded the supervisor:
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start messenger-consume:*
but I still get the error:
[2021-12-25T18:33:08.954217+01:00] console.CRITICAL: Error thrown while running command "messenger-dispatcher --count=100". Message: "Environment variable not found: "MESSENGER_CONSUMER_NAME"." {"exception":"[object] (Symfony\\Component\\DependencyInjection\\Exception\\EnvNotFoundException(code: 0): Environment variable not found: \"MESSENGER_CONSUMER_NAME\". at /var/www/vendor/symfony/dependency-injection/EnvVarProcessor.php:172)","command":"messenger-dispatcher --count=100","message":"Environment variable not found: \"MESSENGER_CONSUMER_NAME\"."} []
I follow the guidelines but there is something missing somewhere ... but where? Why does my app not read env var?
If I call my consumer:
MESSENGER_CONSUMER_NAME=myconsumer ./bin/console messenger:consume redis
it works as expected; it does not work only with supervisor vars.
Thanks in advance
UPDATE This is the complete section config of my supervisor file:
[program:consumer-redis]
command=php /var/www/bin/console messenger:consume redis --limit=5 --time-limit=3600
user=root
numprocs=6
startsecs=0
autostart=true
autorestart=true
process_name=%(program_name)s_%(process_num)02d
environment=MESSENGER_CONSUMER_NAME=%(program_name)s_%(process_num)02d