【问题标题】:How to set a dispatch rate to ActiveMQ queue如何设置 ActiveMQ 队列的调度率
【发布时间】:2018-02-08 16:49:08
【问题描述】:

假设 ActiveMQ 中有一个有 50 多个消费者的队列,有没有办法将每秒最多 1 个事件发送给消费者?这是为了控制大量的事件调度。

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

如何配置队列消费者以在受控流中分派?

【问题讨论】:

  • 您应该考虑为此节流创建另一个中间件。

标签: activemq message-queue flooding


【解决方案1】:

据我所知,没有办法限制消费者。

您可以做的是使用内置的 Camel-routes 限制流向消费者队列的流量。也许您可以找到一种方法在您的案例中使用此功能?

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

【讨论】:

    猜你喜欢
    • 2012-07-03
    • 1970-01-01
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    • 1970-01-01
    • 2018-09-16
    相关资源
    最近更新 更多