8

HornetQをJMSプロバイダー(キュー)として使用してjmsサーバーをセットアップしました。

プロデューサーとして機能するアプリケーションと、コンシューマーとして機能する別のアプリケーション(別のコンピューター)があります。

JMS仕様が配信の順序を保証しないことは理解していますが、それを行う方法を探しています。プロバイダー固有であっても、送信された順序でメッセージを正確に受信します。

何か案は?

4

2 に答える 2

2

どうやらこれは、コンシューマキャッシュを無効にすることで実現できます。これは、hornetq-jms.xml:を変更することによって行われます。

   <connection-factory name="ConnectionFactory">
      <connectors>
         <connector-ref connector-name="netty-connector"/>
      </connectors>
      <entries>
         <entry name="ConnectionFactory"/>
      </entries>

      <consumer-window-size>0</consumer-window-size> <!-- add this line -->
   </connection-factory>
于 2010-11-03T09:17:01.083 に答える
1

実際、JMS仕様のセクション4.4.10.2(メッセージ送信の順序)は、順序についてかなり明確です。

単一のプロデューサーがあり、キューまたはトピックサブスクリプションに対して単一のコンシューマーがある場合、メッセージの順序は、再配信が存在する場合でも常に保証されます。

複数のコンシューマーがある場合、ロールバックまたはコンシューマーのクローズの場合にクライアントバッファーが再配信され、クライアントバッファーが順序どおりに配信されないことがあります。

HornetQには、生成されたメッセージに追加の順序制約を与えるメッセージグループもあります。

于 2011-06-06T01:18:39.033 に答える