Apache Camel - 用于分隔请求但不排队请求的聚合器

时间:2013-07-10 15:27:38

标签: apache-camel

我有路由,当发送消息时会调用刷新服务

我只希望每隔1分钟调用一次服务

如果刷新服务的时间超过1分钟(例如11分钟),我不希望请求排队

第一部分:每1分钟很容易,我只需创建一个完成时间为1分钟的聚合器

关于停止排队请求的部分并不容易,我无法弄清楚如何构建它

e.g。

来自(seda_in) .aggregate(常量(A),空白聚合器) .completionTimeout(1000) .process(无论如何)......

如果进程需要15秒,则可能会有15个新的inoke消息在完成时等待进程。我想最多只需要1来等待这个过程需要很长时间。 (很难预测)

我怎样才能避免这种情况或更好地实现我的目标呢?

1 个答案:

答案 0 :(得分:0)

我相信你会对看到Throttler模式感兴趣,这里有http://camel.apache.org/throttler.html

希望这会有所帮助:)

编辑 - 如果您想要消除多余的请求,您还可以调查在JMS中设置TTL(生存时间)标头,并为您的路由添加1的并发使用者,这意味着任何多余的消息也将被丢弃。