Jms HornetQ主题到主题桥接丢弃消息

Jms HornetQ主题到主题桥接丢弃消息,jms,hornetq,Jms,Hornetq,我在HornetQ()中设置主题桥时遇到问题。这个想法是: 通知将发布到HornetQ服务器A上的主题 此通知通过核心网桥发送到HornetQ服务器B上的主题 客户端应用程序从服务器B获取通知 我现在遇到的问题是,如果服务器B关闭,通知将被删除。我会使用队列,但我们需要其他订户。我希望这座桥能够经久耐用,并且消息能够到达服务器B上的主题。我设置它的方式是在hornetq-configuration.xml中: <queues> <queue name="jms.to

我在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>


jms.topic.topic.dat.cds.internal
jms.topic.topic.dat.cds.internal jms.topic.topic.dat.cds -1 真的 远程连接器
这仅在两台服务器都已启动时起作用

有没有办法使网桥成为耐用的用户?有什么我遗漏的吗

[编辑-解决方案]-这很有效。诀窍在于主题名称必须相同

<queues>
    <queue name="jms.topic.topic.dat.cds">
    <address>jms.topic.topic.dat.cds</address>
</queue>

jms.topic.topic.dat.cds


jms.topic.topic.dat.cds
jms.topic.topic.dat.cds
-1
真的
远程连接器

假设您有jms.topic.SomeTopic主题

您可以按如下方式创建核心队列:

<queues>
    <queue name="SomeTopicBridge">
        <address>jms.topic.SomeTopic</address>
    </queue>
</queues>

jms.topic.SomeTopic
请注意,网桥队列上的地址与主题名称相同

HornetQ上的持久订阅只是主题地址上的核心队列

这样,消息将等待激活,直到您重新启动目标服务器

如果这不能回答你的问题,请提供我更多的细节,我将张贴编辑此答案,以更好地解决你的问题

就您的情况而言,您的地址应如下所示:

<queues>
    <queue name="cds-bridge-queue">
        <address>jms.topic.topic.dat.cds</address>
    </queue>
</queues>

jms.topic.topic.dat.cds

这样,您将在主题地址上创建一个核心队列,即使网桥离线,该核心队列也将接收发送到主题的所有消息。

我想这就是我上面提到的。核心队列是“jms.topic.topic.dat.cds.internal”。它通过桥转发到“jms.topic.topic.dat.cds”。如果网桥关闭(即第二台服务器脱机),主题消息将丢失。我希望网桥作为持久订阅者发挥作用,并始终保留主题消息,直到网桥另一侧的主题可用为止。源位置的主题名称是什么?看起来您的地址搞错了,“jms.topic.topic.dat.cds.internal”是桥源端的主题。“jms.topic.topic.dat.cds”是消费者端的主题。注意:上面的xml是从源端的配置中剪切出来的。目标端只是一个没有特殊配置的主题。这就是你当时犯的错误。。队列的地址应为jms.topic.topic.dat.cds
<queues>
    <queue name="cds-bridge-queue">
        <address>jms.topic.topic.dat.cds</address>
    </queue>
</queues>