【问题标题】:Dynamic throttling of an ActiveMQ message queue with Camel使用 Camel 动态限制 ActiveMQ 消息队列
【发布时间】:2012-04-03 05:14:23
【问题描述】:

我是一个 ActiveMQ / Camel 菜鸟,有一个特定的场景,我首先想知道是否有可能,其次是否有人​​可以提供一点方向。

基本上我需要在队列之外执行动态限制。即能够设置在运行时从队列中消耗特定组消息的速率。

因此,例如,我可能会添加一组以每秒 10 次使用的消息,另一组应以每秒 1 次的速度使用,依此类推。

我知道在骆驼中设置路由和将消息分组到队列等的基础知识,但只是无法从文档中弄清楚这一点。

【问题讨论】:

    标签: java jms activemq apache-camel


    【解决方案1】:

    您可以只使用 Camel 现有的throttler,然后为需要配置不同节流率的每种消息类型使用不同的队列吗?

    例如

    from("activemq:Queue1.Input").
        throttle(20).
        to("activemq:Queue1.Output");  
    from("activemq:Queue2.Input").
        throttle(5).
        to("activemq:Queue2.Output");  
    

    【讨论】:

      【解决方案2】:

      为什么不在 Apache Camel JIRA 中添加 RFE?

      确定给定消息组的速率的逻辑是什么?

      如果不同的消息组通过同一个限制器,它可能会变得复杂。它有点需要鉴别器来确定它属于哪个组的任何消息,因此应该通过限制器的速率。

      如果您花一些时间填写您的用例并记录 RFE,那么我相信 Camel 社区的开发人员可以提供帮助。

      您可以尝试自己实现它。基本上任何东西都是处理器,所以你可以做一个 from("activemq:queue:foo").process(myOwnThrottler).to("bean:handleMessage");

      您可以在 Camel 中扩展一些类: - 委托处理器 - 延迟处理器支持 - 节流器


      克劳斯·易卜生 Apache Camel 提交者

      开源集成:http://fusesource.com 博客:http://davsclaus.blogspot.com/

      【讨论】:

      • 刚买了一本你的书“骆驼行动”克劳斯的 EAP 副本。它非常棒,我绝对可以将它推荐给其他任何想要掌握或想要了解更多关于 Camel 的人。非常深入的东西。
      【解决方案3】:

      是的,您似乎正在寻找代理端节流以避免消费者阻塞。

      您是否在 ActiveMQ 用户/开发者论坛上提出过您的请求?

      【讨论】:

        【解决方案4】:

        好的,我将更详细地展示场景,并尽我所能突出显示主要障碍。

        我有 2 组消息(实际上规模要大得多),每组都有不同的限制要求 - 比如说,我在消息头中将其指定为 flowRate 和 flowTime。

        • 第 1 组:流量 = 1; flowTime = 60(每分钟 1 个)
        • 第 2 组:流量 = 1;流时间 = 1 (每秒 1 个)

        我按照Claus 实现了一个处理器,它检查标题字段并将它们用作延迟器输入。

        我添加了来自第 1 组的 20000 条消息和来自第 2 组的 20000 条消息

        因为节流器是消费者端,所以由第 1 组激活的延迟器将通过快速填充其输入缓冲区而使其变慢,然后第 2 组消息将卡住...即使我按照James 使用多个队列.

        我意识到我可以使用 JMXGroupID 标头对消息进行分组并实现多个消费者,但我认为这不会扩展到容纳 n 个组的要求。

        基本上,我想知道的是,是否有任何方法可以做代理,而不是消费者端节流或其他解决方案,消费者可以在不最终阻塞的情况下进行节流。

        希望我已经清楚地解释了自己,并感谢到目前为止的建议。

        【讨论】:

          猜你喜欢
          • 2022-01-19
          • 2011-04-27
          • 1970-01-01
          • 2015-09-23
          • 1970-01-01
          • 2018-11-30
          • 2022-06-14
          • 2019-04-02
          • 2013-01-22
          相关资源
          最近更新 更多