1

2つのソースサーバーserver#0とserver#1、およびターゲットサーバーserver#2があります。各ソースサーバーには、サーバー#2に接続するためのコアブリッジがあります。(すべてのサーバーはスタンドアロンで2.2.14)

  1. server#0にはキューがありますq#0(ソース)
  2. サーバー#1にはキューがありますq#1(ソース)
  3. サーバー#2にはキューがありますq#2(ターゲット)

このシナリオを考えてみましょう。

  1. クライアントはq#0にメッセージを送信します
  2. q#2はすべてのメッセージを正常に受信します(ブリッジ経由)
  3. クライアントはq#1にメッセージを送信します
  4. server#2によると:重複メッセージが(メッセージごとに)検出され、q#1からq#2に何も追加されていません

q#1からメッセージを受信したときのServer#2メッセージ

[Old I/O server worker (parentId: 2184190, [id: 0x002153fe, localhost/127.0.0.1:6445])] 
14-Nov 13:38:27,300 WARNING [PostOfficeImpl]  Duplicate message detected through the bridge - message will not be routed. 
Message information: ServerMessage[messageID=25769805298,priority=4, bodySize=302,expiration=0, durable=true, address=jms.queue.target, properties=TypedProperties[{_HQ_BRIDGE_DUP=[B@1ff447b}]]@32041289

クライアントがq#0ではなくq#1にメッセージを送信し始めてから、q#0にメッセージを送信し始めると、この問題が再び発生したことに注意してください。(q#1メッセージの場合)

バグですか?私は何をすべきか?

サーバー#0(hornetq-configuration):

<queues>
    <queue name="jms.queue.source">
        <address>jms.queue.source</address>
    </queue>
</queues>

<bridges>
    <bridge name="bridge-to-server2">
        <queue-name>jms.queue.source</queue-name>
        <forwarding-address>jms.queue.target</forwarding-address>
        <reconnect-attempts>-1</reconnect-attempts>
        <static-connectors>
            <connector-ref>remote-connector</connector-ref>
        </static-connectors>
   </bridge>
</bridges>

<!-- connector to server#2 -->
<connector name="remote-connector">
    <factory-class>org.hornetq.core.remoting.impl.netty.NettyConnectorFactory
    </factory-class>
    <param key="host" value="localhost" />
    <param key="port" value="6445" />
</connector>

サーバー#1(hornetq-configuration):

<queues>
    <queue name="jms.queue.source">
        <address>jms.queue.source</address>
    </queue>
</queues>

<bridges>
    <bridge name="bridge-to-server2">
         <queue-name>jms.queue.source</queue-name>
         <forwarding-address>jms.queue.target</forwarding-address>
         <reconnect-attempts>-1</reconnect-attempts>
         <static-connectors>
             <connector-ref>remote-connector</connector-ref>
         </static-connectors>
    </bridge>
</bridges>

<!-- connector to server#2 -->
<connector name="remote-connector">
    <factory-class>org.hornetq.core.remoting.impl.netty.NettyConnectorFactory
    </factory-class>
    <param key="host" value="localhost" />
    <param key="port" value="6445" />
</connector>

サーバー#2(hornetq-configuration):

<connectors>
    <connector name="netty-connector">
         <factory-class>org.hornetq.core.remoting.impl.netty.NettyConnectorFactory
         </factory-class>
         <param key="host" value="localhost" />
         <param key="port" value="6445" />
    </connector>
</connectors>

<acceptors>
     <acceptor name="netty-acceptor">
          <factory-class>org.hornetq.core.remoting.impl.netty.NettyAcceptorFactory
          </factory-class>
          <param key="host" value="localhost" />
          <param key="port" value="6445" />
     </acceptor>
</acceptors>

サーバー#2(hornetq-jms):

<queue name="target">
    <entry name="/queue/target" />
</queue>
4

2 に答える 2

2

これはバグであり、すでに修正されています。

https://issues.jboss.org/browse/HORNETQ-1072

于 2012-11-14T14:14:52.497 に答える
0

パラメータを確認する必要があります

重複検出の使用

HornetQ-configuration.xml ファイルで。

デフォルト値は true ですので、false に設定してみてください。

新しい HornetQ ブックを確認できる場合

www.amazon.com/dp/1849518408/?tag=packtpubli-20

于 2012-11-14T09:50:33.263 に答える