如何设置ActiveMQ队列的分派速率

如何设置ActiveMQ队列的分派速率,activemq,message-queue,flooding,Activemq,Message Queue,Flooding,给定ActiveMQ中有50多个使用者的队列,是否有方法每秒最多向使用者调度1个事件?这是为了控制突发事件。 事件生成器在我的应用程序之外。因此,我需要处理来自用户端的受控调度。 我将jms预取策略配置为低至5。 我不想在几秒钟内向消费者发送100条消息。相反,我希望它是一个稳定的流 如何配置队列使用者以在受控流中进行调度?据我所知,没有办法限制使用者 您可以做的是使用内置的驼峰路由限制流向消费者队列的流量。也许你能找到一种方法在你的案例中使用这个功能 将examples/camel.xml复制

给定ActiveMQ中有50多个使用者的队列,是否有方法每秒最多向使用者调度1个事件?这是为了控制突发事件。

事件生成器在我的应用程序之外。因此,我需要处理来自用户端的受控调度。
我将jms预取策略配置为低至5。 我不想在几秒钟内向消费者发送100条消息。相反,我希望它是一个稳定的流


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

据我所知,没有办法限制使用者

您可以做的是使用内置的驼峰路由限制流向消费者队列的流量。也许你能找到一种方法在你的案例中使用这个功能

  • 将examples/camel.xml复制到conf文件夹中
  • 在camel.xml文件中编辑连接工厂。在默认设置中,将代理uri更改为
    vm://localhost?create=false
  • 在activemq.xml中包含camel.xml
  • 将camel.xml中的路由编辑为如下内容(1msg/1000ms)

    
    节流阀1 msg/s
    1.
    
    < /代码>您应该考虑为这个节流创建另一个中间件。
        <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>