1

给定一个有 50 多个消费者的ActiveMQ队列,有没有办法每秒最多向消费者分派 1 个事件?这是为了控制大量的事件调度。

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

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

4

1 回答 1

2

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

您可以做的是使用内置的 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>
于 2018-02-08T08:49:08.943 回答