5

キューを介して送信されたすべてのメッセージのコピーを作成し、必要に応じて、ユーザーが以前に送信されたメッセージのリストを参照し、ボタンをクリックするだけで何度も再生できるようにする簡単な方法はありますか?

メッセージをキューに送信し、プログラム Y がそれを読み込むプログラム X があります。プログラム X に戻って再生成することなく、以前に送信されたメッセージを再生できるようにしたいと考えています。

4

2 に答える 2

4

メッセージやキューが多すぎない場合は、簡単に開始する方法があります。

まず、「コピー キュー」へのメッセージのコピーを設定できます。これは、この戦略ではキューごとに 1 回実行する必要があります。このようにactivemq.xml

    <destinationInterceptors>
      <virtualDestinationInterceptor>
        <virtualDestinations>
          <compositeQueue name="INVOICE.OUT">
            <forwardTo>
              <queue physicalName="INVOICE.IN" />
              <queue physicalName="INVOICE.COPY" />
            </forwardTo>
          </compositeQueue>
        </virtualDestinations>
      </virtualDestinationInterceptor>
    </destinationInterceptors>

次に、ツールを使用して COPY キューのメッセージを参照し、必要に応じてそれらを OUT キューに再送信します。私は、ヘルメスの JMSツールが好きです。

もっと派手なものが必要な場合は、mirrored queuesを読むことができます。

すべてのメッセージを簡単にコピーする簡単な方法がもう 1 つあります。

activemq にバンドルされている apache-camel を使用します。内部のこのcamel.xml構成は、FOO で始まるキューへのすべてのメッセージの自動コピーを達成します。

<route>
   <from uri="activemq:FOO.>"/>
   <setHeader headerName="CamelJMSDestination">
     <simple>COPY.${header.JMSDestination}</simple>
   </setHeader>
   <to uri="activemq:dummy"/>
</route>

ここで非常に重要な点は、すべてのメッセージを保存すると、時間の経過とともにサーバーがいっぱいになることです。ActiveMQ メモリ管理について読むか、特定の期間だけメッセージのコピーを保持することをお勧めします。これは、送信システムが実際にメッセージの有効期限を設定できるという意味で自動化できるため、メッセージは数日/数週間/数か月後に自動的に削除されます。

于 2012-12-15T10:38:47.323 に答える
0

残念ながら、簡単な方法はありません。そのような動作は、待ち行列システムの考え方に違反するからです。ただし、試すことができることがいくつかあります。

  1. これは少しハックです: メッセージを耐久キューに送信し (そして、メッセージ自体が耐久性があることを確認してください)、自動確認を無効にします。メッセージを確認しない場合、サーバーはそれらを保持し、を使用しQueueBrowserてそれらにアクセスできます。ただし、最終的にはタイムアウトします
  2. プログラム Y に到達したときに、各メッセージのコピーを保存します。実際には、メッセージがガベージ コレクションされないようにするために参照を保存するだけで済みます。メッセージ レートと使用可能なメモリによっては、最終的にメッセージをパージする必要があります。
  3. ActiveMQ プラグインを作成します。これは間違いなく、3 つの中で最も複雑で複雑です。プラグインを作成し (作成方法については ActiveMQ のドキュメントを参照)、プラグインsend()またはpreDispatch()メソッドでメッセージをインターセプトします。そこにcontentのコピーを保存します。また、リプレイ リクエストをリッスンし、リクエストに応じて履歴を送信する必要があります (JMS メッセージ ヘッダーの返信先フィールドを利用できます)。ActiveMQ に付属している統計プラグインは、ここから始めるのに適したソースです。ああ、もちろん、サーバーも最終的にメモリ不足になります。
于 2012-12-14T19:02:45.163 に答える