我想使用路由密钥为“”的自动删除匿名队列,使用Camel的RabbitMQ组件绑定到持久交换。当我像这样设置端点(为了可读性而重新格式化):
rabbitmq://localhost:6672/br.processor?
autoAck=true&
autoDelete=false&
bridgeEndpoint=true&
concurrentConsumers=1&
durable=true&
exchangeType=topic&
prefetchCount=2000&
prefetchEnabled=true&
queue=&
routingKey=&
username=xxxx&
password=xxxxxx&
vhost=xxxx
我收到一个匿名命名的持久队列,绑定到正确的交换,路由密钥设置为队列名称。
我查看了代码(2.14.2),看起来队列总是具有与交换相同的持久性,但是当路由密钥未指定时,路由密钥将仅设置为空字符串({ {1}})。当我尝试这样做时,路由键仍然设置为队列的名称。当我指定路由密钥时,我确实得到了预期的路由密钥。
环顾这里和其他地方,我发现Avoid automatic binding with RabbitMQ and Camel,但没有声明交换和队列导致问题。
是否可以使用Camel?
使用空白路由键绑定队列答案 0 :(得分:0)
使用扇出交换不需要路由密钥
to("rabbitmq://"+System.getenv("rabbitmq_host") + ":" +
System.getenv("rabbitmq_port") + "/myXchange_fanout?"
+ "connectionFactory=#customConnectionFactory&"
+ "exchangeType=fanout&"
+ "queue=test_fanout&"
+ "autoDelete=false&"
+ "vhost=" + System.getenv("rabbitmq_vhost"))