我有一条路由,当发送消息时,它会调用刷新服务
我只希望服务最多每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的并发使用者,这意味着任何多余的消息也将被丢弃。