如何使用Camel RabbitMQ组件创建自动删除队列

时间:2015-04-17 19:52:14

标签: apache-camel rabbitmq

我想使用路由密钥为“”的自动删除匿名队列,使用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?

使用空白路由键绑定队列

1 个答案:

答案 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"))