[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Giuseppe Foza
Criador Giuseppe Foza 17/11/2022

Olá.

Para casos onde a mensagem na fila contém falha, ou ocorra alguma exception, quero que esta mensagem com falha seja redirecionada para outra fila, uma fila de erro.

Para tal, estou tentando configurar o recurso abaixo que existe na documentação da biblioteca de integração:


In Laravel failed jobs are stored into the database. But maybe you want to instruct some other process to also do something with the message. When you want to instruct RabbitMQ to reroute failed messages to a exchange or a specific queue, then this is possible by adding extra options.

  • When the exchange is omitted, RabbitMQ will use the amq.direct exchange for the routing-key
  • When routing-key is omitted, the routing-key by default the queue name is substituted with '.failed'.
  • When using %s in the routing-key the queue_name will be substituted.

Note: When using failed_job exchange with routing-key, u probably need to create your exchange/queue with bindings yourself.

 

'connections' => [
    // ...

    'rabbitmq' => [
        // ...

        'options' => [
            'queue' => [
                // ...

                'reroute_failed' => true,
                'failed_exchange' => 'failed-exchange',
                'failed_routing_key' => 'application-x.%s',
            ],
        ],
    ],

    // ...    
],


Mas não estou conseguindo fazer funcionar.
Meu queue.php está assim: 

'queue' => [
'job' => VladimirYuldashev\LaravelQueueRabbitMQ\Queue\Jobs\RabbitMQJob::class,

'reroute_failed' => true,
'failed_exchange' => 'adesao.topic',
'failed_routing_key' => '%s.failed',
],


Estou criando as filas e os vínculos desta forma:

Artisan::call("rabbitmq:queue-declare adesao");

Artisan::call("rabbitmq:queue-declare adesao.failed");

Artisan::call("rabbitmq:exchange-declare adesao.topic --type=topic");

Artisan::call("rabbitmq:queue-bind adesao.failed adesao.topic --routing-key='#'");

 

Manager Carlos Ferreira 17/11/2022

Olá, Giuseppe!
Tudo bem?

Normalmente quando preciso de algo mais personalizado, eu uso esse package aqui: https://github.com/php-amqplib/php-amqplib

Porque ele embora seja menos "abstrato" o uso, o nível de customização é maior, e dentro do diretório "demo" tem vários exemplos com diferentes maneiras de usar.

--

Sobre suas configurações de falha, estão ok.

Você criou a exchange do tipo fanout com o nome "failed-exchange"?

Carlos Ferreira
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!