如何在 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/