【发布时间】:2021-07-01 22:54:08
【问题描述】:
问题说明:两个不同的broker有两个Queue。每个队列都有一个消费者。生产者正在第一个队列上丢弃消息。我们希望将消息副本发送到第二个队列。可视化
制作人
|
Broker1 --> Queue1 --> Consumer1
| (复制)
Broker2 --> Queue2 --> Consumer2(消费与Consumer1相同的消息,但独立于Consumer1)
问题是
- 在每个代理中仅创建 1 个队列。我已经通过 4 个队列实现了上述目标,但正在寻找更优化的解决方案。
- 不希望使用任何主题。
- 只能通过 activemq 提供的配置来完成。
到目前为止我做了什么: 我设法用 4 个队列完成了上述操作。 在 Broker1 中,Queue1 将副本转发到虚拟目标队列。此外,通过网络连接器将虚拟目的地中的消息发送到代理 2。
<destinationInterceptors>
<virtualDestinationInterceptor>
<virtualDestinations>
<compositeQueue name="Queue1" forwardOnly="false">
<forwardTo>
<queue physicalName="IntermediateQueue"/>
</forwardTo>
</compositeQueue>
</virtualDestinations>
</virtualDestinationInterceptor>
</destinationInterceptors>
<networkConnectors>
<networkConnector
name="Q:broker1->broker2"
uri="static:(tcp://localhost:31616)"
duplex="false"
staticBridge="true">
<staticallyIncludedDestinations>
<queue physicalName="IntermediateQueue"/>
</staticallyIncludedDestinations>
</networkConnector>
</networkConnectors>
在 Broker2 中,将中间 Queue 中收到的所有消息转发到实际的目标队列。
<destinationInterceptors>
<virtualDestinationInterceptor>
<virtualDestinations>
<compositeQueue name="IntermediateQueue">
<forwardTo>
<queue physicalName="FinalDestinationQueue" />
</forwardTo>
</compositeQueue>
</virtualDestinations>
</virtualDestinationInterceptor>
</destinationInterceptors>
感谢任何帮助,因为浏览 activemq 文档和论坛并没有为这个问题提供优化的答案。
【问题讨论】:
标签: activemq