【发布时间】:2014-09-23 14:56:38
【问题描述】:
希望您有空来回答我的问题。在过去的几天里,我正在阅读有关 Camel 的信息,并设法设置并运行所有内容。现在,我遇到了一个棘手的部分:)。基本上,我在运行时使用 Java 定义了一个路由,并将路由配置放在 DB 中。路线正在运行,消息从一侧流向另一侧。但是,当发生异常时,我想知道异常发生在哪里(在哪些路由端点之间),将当前的交换主体(对进一步处理有用的飞行消息)存储在数据库中,由用户更新消息然后从异常点(失败的地方)重试路由执行。可以说所有路由步骤都是幂等的。
我的解决方案:
- 为路线制作拦截器
- 将路线细分为尽可能多的部分(每一步都是新路线)
- 在每个步骤之间使用当前和未来步骤以及当前交换主体更新数据库
- 如果发生异常,将消息存储在数据库中,使用编辑器进行更新
- 使用 ProducerTemplate 向下一个路由点(取自 DB)发送消息
您对此有何看法?这是可行的还是骆驼不能用这种方法支持我?
感谢您的耐心和时间。 希望我已经足够清楚了。
【问题讨论】:
标签: java spring apache-camel