メッセージリスナーを一時的に無効にするにはどうすればいいですか?私が解決したい問題がある:一時的にメッセージリスナーを無効にする方法
- A JMSメッセージは、メッセージを処理しようとしたとき、私はエラーを取得するメッセージリスナー
- で受信されます。
- システムがメッセージを処理できるようになるのを待っています。
- 私のシステムが準備完了するまで、私はもうメッセージは必要ありません。
- ...メッセージリスナーを無効にしたいと思います。
- 私のシステムは、もう一度処理する準備ができています。
- 失敗したメッセージが処理され、JMSメッセージが確認応答されます。
- メッセージリスナーを再度有効にします。
現在、私はSun App Serverを使用しています。 MessageConsumerでnullに設定してメッセージリスナーを無効にし、setMessageListener(myOldMessageListener)を使用してメッセージリスナーを再度有効にしましたが、その後はメッセージが表示されません。
ああ、それは本当に簡単でした。私はもっと多くのスレッドがonMessageメソッドを呼び出すことを期待していました。本当にありがとう! – davidi
接続はスレッドセーフです。ダウンセッション(セッション、コンシューマ、プロデューサ)はスレッドセーフではありません。あなたのコードはマルチスレッドアクセスを避ける必要があります。これを強制するために、JMSは1つのコンシューマでリスナー呼び出しをマルチスレッドできませんでした。 –
私は、JMS仕様がこのシリアル配信動作を明示的に指定していることに気付きました。 JMS 1.0.2仕様のセクション4.4.16です。過去に私はそれがスレッドのルールによって暗示されていると思っていました。 –