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ů.


You must first log in to participate in this discussion