5

ActiveMQ と NMS を使用して相互に通信する C# パブリッシャーとサブスクライバーがあります。ActiveMQ がいつダウンするかを知る方法がないことを除いて、すべて正常に動作します。これは消費者にとって特に悪いことです。それらはデータの取得を停止しますが、データが表示されなくなるという事実を除けば、エラーやイベントは発生しません。

NMS (特に Apache.NMS.IConnection または Apache.NMS.ISession オブジェクト) を使用する方法はありますか

Spring から使用している実装をダウンロードしましたが、特定の Spring 実装は使用していません。使用しているものはすべて Apache.NMS および Apache.NMS.ActiveMQ 名前空間にあります。

4

1 に答える 1

4

この質問が出されてからかなり時間が経ちましたが、現在、いくつかのイベントを利用できます。

m_connection.ConnectionInterruptedListener += new ConnectionInterruptedListener(OnConnectionInterruptedListener);
m_connection.ConnectionResumedListener += new ConnectionResumedListener(OnConnectionResumedListener);
m_connection.ExceptionListener += new ExceptionListener(OnExceptionListener);

m_connection は IConnection オブジェクトです。

これらの 3 つのイベントを使用すると、ブローカーがダウンしたときを見つけることができます (接続を再開したときや例外に遭遇したときなど、他の有用な情報の中でも)

注: フェイルオーバー モードの場合、これらの例外はフェイルオーバー トランスポート層によって飲み込まれ、自動的に処理されます。したがって、これらのイベントは受け取りません。

于 2010-01-14T05:28:14.393 に答える