Nevím proč, ale nefunguje mi vytváření fronty z konsole. Mám případ, kdy následující kód používám z Presenteru a i když fronta neexistuje, tak se vytvoří a pošle se do ní zpráva. Když tento postup ale udělám spuštěný přes Kdyby\Console, tak se fronta vytvořit nedokáže, zpráva se nepošle a vůbec žádná chyba se nezahlásí. Aby mi to pak fungovalo, tak používám zatím “hack”, kdy si tento kód při novém deploy zkopíruji do Presenteru, tam si pošlu první zprávu do Rabbita a pak už mi posílání zpráv z konsole jede. Pokus vytvořit si frontu v administraci Rabbit nepomohlo.
Chyba? Nebo dělám něco špatně?
$this->producer = $rabbitMq->getProducer('errorQueue');
$this->producer->publish(Json::encode([
'errorString' => $errorString,
'previousQueue' => $previousProducer,
'previousJson' => $previousJson,
]
));
Na produkci přece nechceš vytvářet fronty lazy. Fronty a exchanges mají být už vytvořené a pospojované.
Buďto si naklikej všechno v rabbitmq manageru a tedy pak žádné
deklarování řešit nemusíš a nezapomeň potom vypnout
autoSetupFabric
volbu, která je určená primárně pro
jednoduchost vývoje a dělá to, že se ti snaží vždy založit fronty, pokud
ještě neexistují.
rabbitmq:
autoSetupFabric: off
Nebo při deployi zavolej tento příkaz, který ti všechny fronty založí
$ php www/index.php rabbitmq:setup-fabric
Já si vždy naklikám schéma v manageru a pak si exportuju definice, které můžu naimportovat na produkci. Ty ty fronty mažeš? Nebo ti to dělá problém jenom při úplně nové frontě?
Pokud mluvíš o localhostu, tak by to mohlo být tím, že
autoSetupFabric
se řídí podle debugMode
a v CLI je
aplikace vždy v produkčním módu a tedy se ti samy nedeklarují.
Pokud ovšem mluvíš o publikování zpráv (což nijak nesouvisí s vytvářením front), tak to mi funguje jak z normálních http requestů přes php-fpm, tak z cronů které mám v CLI a samozřejmě mi funguje i publikování zpráv z rabbitmq workerů.