Kdyby/RabbitMq – no exchange in vhost

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
jakubdvorak
Bronze Partner | 4
+
0
-

Ahoj,

už si tady s tím docela dlouhou dobu lámu hlavu a pořád to nefunguje.

Používám Kdyby/RabbitMq, nijak neměním konfiguraci a používám prakticky dle tutorialu https://filip-prochazka.com/…kdyby-events

Na localhostu vše funguje naprosto výborně

Na ostrém serveru však není možné publikovat v produceru. V logu RabbitMq vidím:

=ERROR REPORT==== 3-Aug-2015::19:10:58 ===
Channel error on connection <0.343.0> (127.0.0.1:43588 -> 127.0.0.1:5672, vhost: 'postolio', user: 'kralik'), channel 1:
{amqp_error,not_found,"no exchange 'XXX' in vhost 'XXX'",
            'basic.publish'}

Děkuji za rady

Luděk Veselý
Člen | 29
+
+2
-

Z toho logu to vypadá že není vytvořená exchange – spouštěl jsi předtím příkaz setup-fabric php www/index.php rabbitmq:setup-fabric? Pokud se přihlásíš do webového rozhraní RabbitMQ (127.0.0.1:15672), vidíš exchanges a queues správně vytvořené?

jakubdvorak
Bronze Partner | 4
+
0
-

Ahoj,

zdá se, že to pomohlo, teď to na serveru hlásí, že mu chybí knihovna bcmath, ale to doinstalujeme, to je jasné.

Jestli to dobře chápu, tak rabbitmq:setup-fabric se musí spouštět vždy po startu rabbitmq?

Je zvláštní, že na localhostu to dělat nemusím

Luděk Veselý
Člen | 29
+
+3
-

To jestli zprava nebo fronta prezije restart RabbitMQ zalezi na jejich nastaveni. Pisou o tom zde: https://www.rabbitmq.com/…two-php.html cast „Message durability“. Podobne pak muzes Kdyby/RabbitMQ nastavit v config.neon nastavenim deliveryMode: 2. Kompletni konfigurace pak muze vypadat napriklad nejak takhle:

rabbitmq:
    connection:
        host: localhost
        port: 5672
        user: 'guest'
        password: 'guest'
    producers:
        test:
            exchange: {name: 'test', type: topic}
            queue: {name: 'test', deliveryMode: 2}
            contentType: application/json
            deliveryMode: 2
            autoSetupFabric: on
    consumers:
        test:
            exchange: {name: 'test', type: topic}
            queue: {name: 'test', deliveryMode: 2}
            callback: @App\Model\Test::myMethod
            contentType: application/json
            deliveryMode: 2
            autoSetupFabric: on

Editoval Luděk Veselý (4. 8. 2015 9:56)