我有一个简单的 Apache Camel 路线
from("spring-rabbitmq:myExchange?routingKey=foo&bridgeErrorHandler=true")
.log("From RabbitMQ: ${body}");
示例项目位于此处。
如果当我启动路由时 RabbitMQ 服务器已启动并正在运行,则一切正常。问题是,如果 RabbitMQ 在路由启动上不可用,则路由启动将以 org.springframework.amqp.AmqpConnectException 终止。
有什么方法可以处理异常并在延迟一段时间再次启动路线后重试几次吗?
我尝试添加
onException
但这似乎仅适用于生产者(“到”端点)。
我还发现了 Apace Camel
RoutePolicy.
它的 onInit 方法是在路线崩溃之前触发的,因此可能会以某种方式使用它来重试路线启动,但文档不是很详尽,我也没有找到任何示例。
是,请参阅监督路线控制器 https://camel.apache.org/manual/route-controller.html
您还可以查看rabbitmq连接工厂(springrabbitmq的东西),因为它也可能内置某种重试功能,您可以配置。