我有一个apache camel应用程序,它在生产环境中作为三个相同的服务运行以实现可伸缩性。我想使用camel-mail api为此应用程序添加电子邮件服务器轮询。由于我不希望所有这三个实例同时轮询服务器,我想在camel民意调查之前设置一些锁定机制。但是,由于邮件消费者正在对消费者进行投票,我不能在这种情况下使用它们。有一个简单的方法吗?
简而言之,我有一条如下路线:
from("imaps://mymail...")//This polls periodically
.to(Processmail.class)
但我需要类似下面的内容来自骆驼dsl
from("timer:mytimer")
.to("direct:checkDistributedLock")
.choice()
.when(header("gotlock").isEqualTo("true"))
.from("imaps://..") // can not use from here!!!
.end()
答案 0 :(得分:2)
pollEnrich()可让您“召唤”#34;作为您的路线中的一个步骤,将投票消费者。这意味着,它可以像" from()"一样使用,但可以在路线中途使用。
示例:强>
from("timer:mytimer")
.to("direct:checkDistributedLock")
.choice()
.when(header("gotlock").isEqualTo("true"))
.pollEnrich("imaps://mymail...")
.to(Processmail.class)
.end()