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

标签 java jms activemq publish-subscribe subscriber

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

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

最佳答案

这是一个非常常见的用例。您实际上应该查看的是 composite destinations ,而不是持久主题(此功能存在很多问题,主要问题是消息默认情况下不会持久化,因此不会在代理中断时幸存)。

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

<destinationInterceptors>
  <virtualDestinationInterceptor>
    <virtualDestinations>
      <compositeTopic name="orders">
        <forwardTo>
          <queue physicalName="orders.consumer1" />
          <queue physicalName="orders.consumer2" />
        </forwardTo>
      </compositeTopic>
    </virtualDestinations>
  </virtualDestinationInterceptor>
</destinationInterceptors>

这样,当您的订阅者最终连接到自己的队列时,它会耗尽输入其中的消息。

请注意,请确保您的 memory limits are large enough处理存储在这些队列中的消息,否则您的代理将出现挂起(称为生产者流控制的代理功能)。

我看到你是新用户,所以如果这回答了你的问题,请打勾。

关于java - 如何在 activemq.xml 中创建/预配置持久订阅者,以便这些订阅在 ActiveMQ 启动时准备就绪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11319830/

相关文章:

jms - 在 Camel 中是否可以为发送到 ActiveMQ 的每条消息设置不同的请求超时?

java - IBM MQ Server 8.0.0.4 客户端库

ruby - 使用 ruby​​ 和 stomp 将消息写入 ActiveMQ

tomcat - Tomcat 7 上的 ActiveMQ Web 控制台 5.6 - Taglibs 中的空指针

c++ - 我的 C++ ActiveMQ 客户端可以发送消息,但不能接收消息

java - 在多个 JPanel 之间 Swing FocusTraversalPolicy

java - 通过使用 xpath 获取同级值来查找 xml 节点值

java - 带条件的循环 - 处理

java - 需要一些关于这个 Java 入门程序的指导

java - Java HTTP 推送(消息传递)的最佳解决方案