Hi there,

When working with an exchange of type headers, we need to bind to the
queues by declaring maps of header key value pairs for each target queue.

There seems to be a RabbitMQ configuration issue/limitation when trying to
describe such relationships for binding. I don't know if there is a
workaround which is why I extend the question to you (whomever you may be
and are still interested).

I am trying to declare a headers exchange and bind to a preexisting queue
through the endpoint URI. I have set the following parameters:

exchangeType=headers
durable=false
autoDelete=true
exclusive=false
autoAck=true
declare=true
arg.exchange.alternate-exchange=alternate-exchange
arg.binding.x-match=all
arg.binding.goto=1
arg.queue.x-queue-type=classic

After running this once, the exchange is declared but the queue that
receives the binding is a newly created queue (with a name consisting of a
bunch of numbers). I tested again including the following parameter

skipQueueDeclare=true

The exchange is declared but the binding is skipped (which makes sense and
I think is documented).

In this particular case (headers exchange) I don't believe that trying to
declare this kind of information from a URI would make much sense (or the
workaround might add far more complexity than warranted).

Afterthought.
I don't know if the To Dynamic (toD) EIP element could be used to supply
this information somehow. I understand that there are some optimizations
built in when using dynamic rabbitmq endpoints but my understanding is far
too limited.

Reply via email to