0

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

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

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

第一部分:每1分钟很简单,我只是创建一个completionTimeout为1分钟的聚合器

关于停止请求排队的部分并不那么容易,我不知道如何构造它

例如

from( seda_in ) .aggregate( 常量(A),空白聚合器 ) .completionTimeout( 1000 ) .process( 随便 )...

如果该过程需要 15 秒,则可能有 15 条新的 inoke 消息在等待该过程完成时。我希望最多只有 1 个等待该过程花费多长时间。(很难预测)

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

4

1 回答 1

0

我相信您会对查看 Throttler 模式感兴趣,该模式记录在此处http://camel.apache.org/throttler.html

希望这可以帮助 :)

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

于 2013-07-11T10:17:19.933 回答