我们已经创建了一个嵌入了Camel的小型Spring启动应用程序。它只是通过imap对未读电子邮件的Office365邮箱进行轮询。
我们有一些详细的日志记录,我们看到Box 1使用该消息,然后处理它(发送一些REST请求)并完成。 2s之后,在方框1完成后,方框2选择相同的消息并处理它。
我们实施了一个Idempotent消费者:
from(casesMailBox.getUri()).idempotentConsumer(simple("${in.headers.Message-ID}"), repo).routeId("messaging").process(emailToCaseProcessor);
我们可以在底层Oracle表中看到重复的条目。
文件不清楚,但我认为idempotentConsumer会尽快提交给DB。
我在这里错过了什么吗?
答案 0 :(得分:0)
幂等消费者不会在集群环境中工作,因为幂等存储库是内存存储库。
您必须使用中央数据库或基于Hazelcast数据网格的实施。
有关详细信息,请参阅:http://camel.apache.org/idempotent-consumer.html
<强>动物园管理员,强>
如果你想使用民意调查消费者;在集群环境中的调度程序,并希望避免重复路由触发,您可以使用带有路由策略的zookeeper。
价:http://camel.apache.org/zookeeper.html
希望它有所帮助!!!