0

JMSキューからメッセージを受信する「サーバー」アプリケーションがあります。また、一時キューを作成してからサーバーにメッセージを送信し、JMSReplyToヘッダーを一時キューに設定するクライアントアプリケーション。

サーバーは、一時キューを使用してクライアントに応答します。ただし、サーバーにはクライアントへの多数の応答があり、すべて一時キューを介して長期間送信されます(応答はそのクライアントに固有であり、他の人には興味がありません)

クライアントが切断されたかどうかをサーバーが検出するにはどうすればよいですか?その特定の一時キューでのメッセージの送信を停止できますか?それとも、JMSでやるべきではないことをしようとしていますか?

4

2 に答える 2

1

activeMQを使用すると、一時キューを宛先にキャストしてから、宛先に問い合わせることができます。

if (dest.getConsumers().size() < 1) {
  // No more consumers on this destination, so kill it.
}

または、宛先から、を取得しDestinationStatistics、からキューの深さを取得します。getMessages()それより大きい場合nは、tempQを強制終了します。

于 2009-07-08T21:21:43.240 に答える
0

そのキューへの投稿は、クライアントがなくなると存在しなくなるため、失敗するはずです。一時キューは、それを作成したセッションが存在する間のみ存在することになっています。

したがって、クライアントがなくなったときに通知する必要があるとは思いません。これは、JMSを介して行うことはできません。これは、応答メッセージを送信しようとする試みが実際にこれを示しているためです。

于 2009-07-08T17:13:22.277 に答える