我有一个定制端点和使用者,通过放置持久查询来订阅LDAP服务器中的更改。
当使用端点的路由启动时,可能无法到达LDAP服务器,并且在使用者中创建连接失败。到目前为止,我正在抛出一个例外,骆驼标记消费者停止。就是这样。(加上一些错误,我不太理解LDAP路由调用的“直接”路由。但这是另一回事。)我想要发生的是优雅地失败,然后再试一次。任一
这两种“适当”的骆驼成分行为中有哪一种是正确的?如果是,我怎样才能做到呢?如果没有,我该怎么做呢?
另一种可能的方法是在创建使用者时报告成功,即使LDAP连接无法建立。然后拆分一个线程,该线程试图创建连接,并将持久查询按一定的间隔放置。但这对我来说是不对的,因为路由/端点/消费者将处于“启动”状态,但在建立到目录服务器的连接之前,它们确实功能失调。
我查看了camel-jms组件是如何处理testConnectionOnStartup设置的,即当它设置为false时。在我看来,即使连接无效,一切都将处于“启动”状态。
发布于 2015-08-04 19:56:20
听起来你可以利用骆驼的送货政策。
http://camel.apache.org/redeliverypolicy.html
你也可以在这里找到一些例子:
http://camel.apache.org/how-do-i-retry-processing-a-message-from-a-certain-point-back-or-an-entire-route.html
这样,每次捕获异常时,都要抛出并重发消息X次。如果消息仍然失败,则将其放入死信队列中。
https://stackoverflow.com/questions/31812788
复制相似问题