我在 HornetQ 中设置主题桥时遇到了麻烦(与前面的问题有关)。这个想法是这样的:
- 通知被发布到 HornetQ 服务器 A 上的主题
- 此通知通过核心网桥发送到 HornetQ 服务器 B 上的主题
- 客户端应用程序从服务器 B 获取通知。
我现在遇到的问题是,如果服务器 B 关闭,通知就会被丢弃。我会使用队列,但我们需要其他订阅者。我希望网桥是持久的,并且消息会发送到服务器 B 上的主题。我设置它的方式是在 hornetq-configuration.xml 中:
<queues>
<queue name="jms.topic.topic.dat.cds.internal">
<address>jms.topic.topic.dat.cds.internal</address>
</queue>
</queues>
<bridges>
<bridge name="cds-bridge">
<queue-name>jms.topic.topic.dat.cds.internal</queue-name>
<forwarding-address>jms.topic.topic.dat.cds</forwarding-address>
<reconnect-attempts>-1</reconnect-attempts>
<use-duplicate-detection>true</use-duplicate-detection>
<static-connectors>
<connector-ref>remote-connector</connector-ref>
</static-connectors>
</bridge>
</bridges>
这仅在两台服务器都启动时才有效。
有没有办法让网桥成为持久的订阅者?有什么我想念的吗?
[编辑 - 解决方案] - 这有效。诀窍是主题名称必须相同。
<queues>
<queue name="jms.topic.topic.dat.cds">
<address>jms.topic.topic.dat.cds</address>
</queue>
<bridges>
<bridge name="cds-bridge">
<queue-name>jms.topic.topic.dat.cds</queue-name>
<forwarding-address>jms.topic.topic.dat.cds</forwarding-address>
<reconnect-attempts>-1</reconnect-attempts>
<use-duplicate-detection>true</use-duplicate-detection>
<static-connectors>
<connector-ref>remote-connector</connector-ref>
</static-connectors>
</bridge>
</bridges>