2017-01-04 6 views
0

TibcoのJMSトピックからすべてのメッセージを取得するにはどうすればよいですか?トピックからすべてのメッセージを取得

私はトピックのサブスクライバを使用することができますが、それは私のニーズに完全に適合しません。トピックからすべてのメッセージを読み込んで処理するプロセスを1日に1回だけ開始したいと考えています。同じプロセスでタイマーとトピックの両方のサブスクライバを持つことはできません。

「JMSトピックメッセージを待つ」と試してみましたが、トピックにいくつあっても、メッセージは1つしかないようです。

答えて

1

ベスト・ソリューションは、JMSトピックをキューにブリッジし、プロセスの開始時に「JMSキュー・レシーバー」アクティビティーを使用することです。

インスタンスを1日1回起動すると、キュー内のすべてのメッセージが接続されて処理されます。

+0

私はこの解決策を考えていましたが、私はブリッジを避けたいと思っていました。 –

+0

トピックとキューが1つだけの場合は、単一のブリッジを作成することはあまり問題にならないはずです。複数のトピックとキューをバッチで作成できます。 私はブリッジが何らかの理由で悪い担当者を得ていることは知っていますが、一般的に問題はありません。 –

+0

私はいろいろなやり方を選びましたが、あなたの答えは一番良かったので、私はそれを受け入れました。 –

2

私は別の方向を試みます。 2つの別々のプロセスを使用して実装できます。

すべてのメッセージを受信するトピックのサブスクライバ(耐久性あり)。このプロセススターターは、デフォルトで無効にする必要があります(リスナーはアクティブではありません)。

第2のプロセスは、Hawk(エンジンコマンド)によって最初のプロセスをアクティブにするタイマーです。したがって、加入者がアクティブになるたびに、イベントの処理が開始されます。

問題のある部分は、トピックサブスクライバの終了後の非アクティブ化です。そのためには、サブスクライバを非アクティブ化するときに別のロジックが必要です。これは、加入者がメッセージをもはや持たないときに、別個のタイマーまたはいくつかのホークルールが発火することによっても行うことができる。

0

(実装可能な場合)トピックのサブスクライバ(またはトピックがキューにブリッジされている場合はキューサブスクライバ)を実装し、メッセージが公開されるたびにBusinessWorksエンジンでジョブインスタンスを生成させることができます。

これにより、トピックまたはキューのすべてのメッセージを取得するよりも、ワークロードをはるかに均等に分散できます。

関連する問題