Apache camel ApacheCamel—用于分隔请求但不排队请求的聚合器

Apache camel ApacheCamel—用于分隔请求但不排队请求的聚合器,apache-camel,Apache Camel,我有一个发送消息时调用刷新服务的路由 我只希望最多每1分钟调用一次服务 如果刷新服务花费的时间超过1分钟(例如11分钟),我不希望请求它排队 第一部分:每1分钟很简单,我只需创建一个completionTimeout为1分钟的聚合器 关于停止请求排队的部分并不容易,我不知道如何构造它 e、 g from(seda_in) .聚合(常数(A),空白聚合器) .completionTimeout(1000) .过程(无论什么) 如果进程需要15秒,那么在进程完成时可能会有15条新的inoke消息等待

我有一个发送消息时调用刷新服务的路由

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

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

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

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

e、 g

from(seda_in) .聚合(常数(A),空白聚合器) .completionTimeout(1000) .过程(无论什么)

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


我如何避免这种情况或更好地构建它以实现我的目标

我相信您会有兴趣看到节流阀的模式,这里有文档记录

希望这有帮助:)

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