我是Camel和RabbitMQ的新手,正在编写一个简单的消费者,使用以下路线
from("rabbitmq://127.0.0.1?username=admin&password=admin&queue=TestQueue&routingKey=TestQueue&exchangeName=''&autoAck=false&autoDelete=false").delay(3000).bean(exceptionBean,"throwGenericException").log(LoggingLevel.INFO, "Receiving from the Queue: ${id}");
Bean没有代码,只是抛出异常。我的问题是,即使在从bean中抛出异常之后,消息也会在队列中自动确认。
为什么骆驼会在路线的最后确认它?。
任何指针都表示赞赏。
答案 0 :(得分:0)
也许你的例外是因为参数exchangeName不存在,
尝试像这样调用你的RabbitMQ:
from("rabbitmq:{{RABBITMQ_ADDRESS}}/{{RABBITMQ_EXCHANGE}}?routingKey={{RABBITMQ_QUEUE_IN_ROUTING_KEY}}&username={{RABBITMQ_USERNAME}}&password={{RABBITMQ_PSWD}}&autoDelete=false&queue={{RABBITMQ_QUEUE_IN}}")
答案 1 :(得分:0)
查看此链接
https://gist.github.com/mgyongyosi/fa71a52da65a9dd3cddd537fb4feca66
该路由需要将setFaultBody设置为true才能不自动确认。试试上面的示例,它将为您提供一个思路。
问候 Aravind