Symfony messenger queues with binding key - retry strategy
Ok, I found answer myself.
I created new retry strategy. I changed queue_name_pattern
to %routing_key%_%delay%
and created my own SendFailedMessageForRetryListener
. To retry envelope I added stamp new AmqpStamp($envelope->last(AmqpReceivedStamp::class)->getQueueName())
which is used to create proper routing key for delay queue. So instead of creating queue based on exchange name I have it created based on queue name.
Two more things:
Binding keys in queue looks like:
queues: create_miniature_v1: binding_keys: - create_miniature_v1 - first create_miniature_v2: binding_keys: - create_miniature_v2 - first
and failed queues:
queues: create_miniature_v1_dlq: binding_keys: - create_miniature_v1 create_miniature_v2_dlq: binding_keys: - create_miniature_v2