2015-08-24 48 views
3

我有一个简单的泵在骆驼建立,使用以下URI从供应商的RabbitMQ服务器消耗假:Apache的骆驼,RabbitMQ的:消费的队列是自动删除=在交易所即自动删除=真

rabbitmq://host:port/statusExchange?queue=myQueueName&username=un&password=pass&exchangeType=fanout&autoDelete=true&durable=false 

(他们的交流是设置为自动删除= TRUE,耐用= FALSE)

当这个运行它会创建一个新的队列(myQueueName),这也是自动删除=真耐用=假。

我想我的队列是autodelete = false,因为我们有供应商系统和我的系统之间的网络不稳定。

Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=406, reply-text=PRECONDITION_FAILED - inequivalent arg 'auto_delete' for exchange 'statusExchange' in vhost '/': received 'false' but current is 'true', class-id=40, method-id=10) 

如果我进入管理工具和手动创建队列,设置自动删除为false:

但是,如果我改变自动删除ARG在URI运行的归结为代码时,我得到错误。然后设置自动删除=在URI中我碰到下面的错误真:

Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=406, reply-text=PRECONDITION_FAILED - inequivalent arg 'auto_delete' for queue 'myQueueName' in vhost '/': received 'true' but current is 'false', class-id=50, method-id=10) 

这意味着自动删除URI参数适用于队列和交换双方,如果他们不同意你似乎是去骨。我无法在兔子文档中找到任何暗示此配置出错的内容,并且管理工具让我可以毫无问题地设置此配置。

但是,在http://camel.apache.org/rabbitmq.html上找到的文档中提到了exchangeArgsConfigurer和queueArgsConfigurer,这听起来很有希望。然而没有围绕什么参数的文档可以通过什么格式。而我对源头的细读导致了我一个盲目的胡同。 (我要去恳求一般的Java无知,我必须在这里或那里涉猎,但它不是我选择的语言)

那么骆驼在兔子绿洲喝什么呢?

+0

我也看到一个案例,其中'autodelete = true'在URI中是无效的。此外,当我让Camel创建交换时,完全删除它并不会有帮助,但它仍然是作为'autodelete = false'生成的,即使默认值为'true'。 –

回答