【问题标题】:Apache Camel - aggregator to space out requests, but not queuing requestsApache Camel - 用于分隔请求但不排队请求的聚合器
【发布时间】:2013-07-10 15:27:38
【问题描述】:

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

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

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

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

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

例如

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

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

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

【问题讨论】:

    标签: apache-camel


    【解决方案1】:

    我相信您会对查看 Throttler 模式感兴趣,这里记录了 http://camel.apache.org/throttler.html

    希望这会有所帮助:)

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-16
      • 2014-10-18
      相关资源
      最近更新 更多