contributte/rabbitmq – restartování consumera po deployi

exquis
Člen | 84
+
0
-

Ahoj,

mám debian server, na tom klasicky rozběhnutý web. Do toho je na webu docker, kde si nyní hraji s rabbitMQ (implementace contributte/rabbitmq).

Problem 1:

Co mi neni jasne, jak po deployi shodim vsechny consumery, aby se „refreshnul“ jejich kod a zaroven je hned vsechny nahodil.

Aktualne mam opravdu jen jedhoho testovaciho consumera, ale to prave z duvodu, ze nevim jak s tim poradne zachazet. Cilem je mit consumeru vice (odesilani mailu, sms, narocnejsi veci na zpracovani atd).

Toho jedineho consumera spoustim jako „nekonecneho“, ale vlastne nevim jak takovy proces automatizovane zastavit, stahnout aktualni verzi kodu a spustit.

php index.php rabbitmq:consumer testConsumer

Problem 2:

Obcas rabbit spadne a prestane zpracovavat, jak ho znovu automatizovane nahodit? Gemini povida neco o Supervisoru, je to cesta?

Diky

Felix
Nette Core | 1275
+
+1
-

Ja pouzivam Symfony Messenger a mam nastaveni, ze se po konzumaci 100–1000 zprav a nebo uplynuti 3600s proces nahodi znovu. Tohle by ti mohlo pomoct. Pripadne pokud chces hned po deploymentu, tak muze vyuzit prave supervisora a supervisorctl restart <consumer>.

Pavel Kravčík
Člen | 1209
+
+1
-

My to máme nastavené cca takhle plus k tomu jsme si napsali takový ovládací GUI, kde můžeš restartovat, vypnout, zapnout automatickou obnovu apod. Co dělá pak přes shell:

systemctl restart <service>

[Unit]
Description=XXX
After=mysql.service rabbitmq-server.service

[Service]
Type=simple
WorkingDirectory=/opt/bcom/var/www/xxx
ExecStart=/usr/bin/php8.4 ./bin/rabbit.php xxx
Restart=always
RestartSec=1m
MemoryMax=256M
MemorySwapMax=16M

[Install]
WantedBy=multi-user.target

Editoval Pavel Kravčík (Včera 9:28)

dms
Člen | 103
+
0
-

Přes supervisord.conf nastaveno x běžících procesů cca takhle

[program:aaa]
command=/opt/php83/bin/php /www/index.php rabbitmq:consumer -w testQueue1
directory=/
user=admin
autorestart=true
process_name=%(process_num)02d
numprocs=3

[program:bbb]
command=/opt/php83/bin/php /www/index.php rabbitmq:consumer -w testQueue2
directory=/
user=admin
autorestart=true
process_name=%(process_num)02d
numprocs=3

po deploy spustit: systemctl restart supervisord
jestli je to dobrý řešení buhví, ale funguje to už několik let stabilně

Editoval dms (Včera 19:25)