骆驼条件民意调查消费者

时间:2016-11-01 19:25:46

标签: apache-camel

我有一个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()

1 个答案:

答案 0 :(得分:2)

pollEnrich()可让您“召唤”#34;作为您的路线中的一个步骤,将投票消费者。这意味着,它可以像" from()"一样使用,但可以在路线中途使用。

示例:

   from("timer:mytimer")
     .to("direct:checkDistributedLock")
     .choice()
      .when(header("gotlock").isEqualTo("true"))
         .pollEnrich("imaps://mymail...")
         .to(Processmail.class)
     .end()