我有一个自定义端点和使用者,通过发出持久查询来订阅LDAP服务器中的更改。
当使用端点的路由启动时,可能无法访问LDAP服务器,并且在使用者中创建连接失败。到目前为止,我抛出一个异常,Camel将消费者标记为停止。就是这样。 (加上一些错误我不太明白"直接" LDAP路由调用的路由。但这是另一回事。)我想要发生的是优先失败并重试。任
是两个中的任何一个"正确的" Camel组件的行为?如果是的话,我该如何实现呢?如果没有,我该怎么办呢?
我可能让它工作的另一种方法是在创建消费者时报告成功,即使无法建立LDAP连接。然后分离尝试创建连接的线程,并以一定的间隔放置持久查询。但这对我来说是错误的,因为路线/终点/消费者将处于状态"开始"但在确定与目录服务器的连接之前,它确实是功能失调。
我查看了camel-jms组件对testConnectionOnStartup
设置的处理方式,即设置为false
时的设置。对我来说,看起来一切都将处于状态"开始"即使连接无效。
答案 0 :(得分:0)
听起来你可以利用Camel的重新发送政策。
http://camel.apache.org/redeliverypolicy.html
你也可以在这里找到一些例子:
这种方式,每当你捕获异常时,你就会抛出并重新发送消息X次。如果消息仍然失败,则将其放入死信队列。