gpt4 book ai didi

java - Apache Camel ,RabbitMQ : Consuming a queue that is autodelete=false on an exchange that is autodelete=true

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:42:07 24 4
gpt4 key购买 nike

我在 camel 中设置了一个简单的泵,它使用以下 uri 从供应商的 rabbitmq 服务器消耗数据:

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

(他们的交换设置为 autodelete=true,durable=false)

运行时,它会创建一个新队列 (myQueueName),该队列也是 autodelete=true durable=false。

我希望我的队列是 autodelete=false,因为供应商系统和我的系统之间存在一些网络不稳定。

但是,如果我更改 uri 中的自动删除 arg,我会在运行代码时出错,归结为:

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。然后在 uri 中设置 autoDelete=true 我收到以下错误:

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)

这意味着 autoDelete uri 参数适用于队列和交换器,如果它们不一致,您似乎会被骨头。我在 rabbit 文档中找不到任何表明此配置有误的信息,而管理工具让我可以毫无问题地设置此配置。

但是在 http://camel.apache.org/rabbitmq.html 上找到的文档中有对 exchangeArgsConfigurer 和 queueArgsConfigurer 的引用,这听起来很有前途。但是,没有关于可以传递哪些参数以及以何种格式传递的文档。我对来源的细读使我陷入了死胡同。 (我要为一般的 Java 无知辩护,必要时我会在这里和那里涉猎,但这不是我选择的语言)

那么 Camel 在兔子绿洲喝水有什么用呢?

最佳答案

我过去遇到过一些类似的问题,我找到的唯一解决方案是声明消费者端的队列等于(相同)生产者生成的队列,看看这个:

Amqp client not connecting to activemq server.

关于java - Apache Camel ,RabbitMQ : Consuming a queue that is autodelete=false on an exchange that is autodelete=true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32191772/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com