Symfony messenger queues with binding key - retry strategy Symfony messenger queues with binding key - retry strategy symfony symfony

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