如何设置ActiveMQ队列的调度速率

时间:2017-12-10 13:35:12

标签: activemq message-queue flooding

鉴于 ActiveMQ 中有50个以上的消费者排队,是否有办法将 以每秒最多1个事件发送给消费者 ?这是为了控制大量的事件调度。

活动制作人不在我的申请范围内。因此,我需要处理来自消费者方面的受控派遣 我有一个配置为低至5的jms预取策略。 我不想在几秒钟内向消费者发送100条消息。相反,我希望它是一个稳定的流程。

如何配置队列使用者以受控流程进行调度?

1 个答案:

答案 0 :(得分:2)

据我所知,没有办法扼杀消费者。

您可以做的是使用内置的Camel路由限制流向使用者队列的流量。也许您可以找到一种方法来为您的案例使用此功能?

  1. 将examples / camel.xml复制到您的conf文件夹。
  2. 编辑camel.xml文件中的连接工厂。在默认设置中,将代理uri更改为vm://localhost?create=false
  3. 在activemq.xml <include resource="camel.xml"/>
  4. 中包含camel.xml

    将camel.xml中的路由编辑为类似的内容(1msg / 1000ms)

        <route>
            <description>Throttler 1 msg/s</description>
            <from uri="activemq:msgs.in"/>
            <throttle timePeriodMillis="1000" asyncDelayed="true">
              <constant>1</constant>
              <to uri="activemq:msgs.out"/>
            </throttle>
        </route>