【发布时间】:2014-04-17 13:27:47
【问题描述】:
我正在编写一个 apache-camel RabbitMQ 消费者。我想以某种方式对连接问题做出反应(即尝试重新连接)。是否可以配置 apache-camel 自动重连?
如果没有,我怎样才能知道与队列的连接被中断了?我做了以下测试:
- 启动队列(和一些生产者)
- 启动我的消费者(它按预期接收消息)
- 停止队列(消息按预期停止到达,但未引发异常)
- 启动队列(未收到新消息)
我在 Scala 中使用骆驼(通过 akka-camel),但 Java 解决方案可能也可以
【问题讨论】:
-
如果您使用的是 Akka,那么这听起来像是监督的完美案例。为您的骆驼消费者端点参与者设置一个单独的主管,从消费者参与者那里获取连接失败异常,然后决定是否向子节点发送消息以重新启动它。这样,您就可以将数据消耗与连接管理的语义分开
-
但我没有在消费者参与者中遇到异常,因此我不知道如何检测端点不工作
-
您确定您的消费者参与者没有收到您可能没有在
receivePF 中处理的其他消息(如失败)吗?您可以添加case any => println(any),然后查看发生连接失败时是否会受到影响。 -
我有任何情况,什么都没有发现
标签: scala apache-camel akka