如何在activemq.xml中创建/预配置持久订阅者,以便在ActiveMQ启动时准备好这些订阅?

use*_*049 3 java activemq-classic jms subscriber publish-subscribe

如何在activemq.xml中创建/预配置持久订阅者,以便在ActiveMQ出现时准备好这些订阅?好像订阅者处于脱机状态.

我们期待固定(但可配置)数量的已知订户.想要缓冲发布者从第1天开始发送的所有消息,以防所有订阅者都未启动.不确定这是否是常见情况,但提前感谢您的帮助.

Jak*_*rab 6

这是一个非常常见的用例.你应该看到的是复合目的地,而不是持久的主题(这个功能有很多问题,主要的是默认情况下没有持久的消息,因此没有幸存的经纪人中断).

使用此方案,您可以设置一个复合主题,将每条消息转发到多个队列 - 每个用户专用一个队列.

<destinationInterceptors>
  <virtualDestinationInterceptor>
    <virtualDestinations>
      <compositeTopic name="orders">
        <forwardTo>
          <queue physicalName="orders.consumer1" />
          <queue physicalName="orders.consumer2" />
        </forwardTo>
      </compositeTopic>
    </virtualDestinations>
  </virtualDestinationInterceptor>
</destinationInterceptors>
Run Code Online (Sandbox Code Playgroud)

这样,当您的订户最终连接到自己的队列时,它会消耗送入其中的消息.

需要注意的是,确保您的内存限制足以处理存储在这些队列中的消息,或者您的代理似乎挂起(称为生产者流控制的代理函数).

我看到你是一个新用户,所以如果这回答了你的问题,请勾选它.