ApacheCamel-聚合器,用于间隔请求,但不用于排队请求



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

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

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

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

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

例如

来自(seda_in).agregate(常量(A),空白聚合器).completeTimeout(1000).处理(不管怎样)。。。

如果进程需要15秒,那么当进程结束时,可能有15条新的inoke消息在等待进程。无论这个过程需要多长时间,我最多只想让1个人等待。(很难预测)

我如何才能避免这种情况,或者更好地构建它来实现我的目标?

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

希望这有帮助:)

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

最新更新