0

1つのアプリケーションサーバーでc#Windowsサービスを実行し、1つのサーバーでTIBCOEMSを実行しています。両方のサーバーは、週の異なる時間に再起動されます。

アプリケーションサーバーが最初にオンラインに戻ったとき、EMSサーバーがオンラインに戻るまでc#windwosサービスがEMSサーバーへの接続を試み続けるのが好きです。(このシナリオで機能する再試行ロジックがあります)

アプリケーションサーバーの実行中にEMSサーバーがオフラインになった場合(たとえば、c#のEMSクライアントがキューの着信メッセージをリッスンしている場合)、このシナリオの再試行ロジックを実行するための最良の方法は何ですか?例外はすぐにスローされますか?

ありがとう

4

3 に答える 3

1

接続終了の通知を取得する方法は? conneciton オブジェクトの Exception Listner と Exception Hanlder があるようです。しかし、両方の実行中にネットワークカードをオフにすると、c# でそれらのいずれもキャッチできません。

それらの違いは何ですか?

于 2012-12-05T11:52:59.713 に答える
0

Windows Service接続のみを目的としている場合TIBCO EMSは、依存関係を追加できます。TIBCO EMSその後、サービスが停止/再起動されるたびに、Windows Serviceそれぞれ停止/再起動します。欠点は、開始時TIBCO EMSWindows Service自動的に開始されないことです (この問題を克服するために 2 つのサービスをペアリングできるかどうかはわかりません)。

または、.NET のタイマー クラスの 1 つ ( System.Timers.Timerなど) を、TIBCO EMS への接続を処理するクラスに追加できます。次に、接続が閉じられたときにタイマーを開始し、接続が開かれた後にタイマーを停止します。タイマーは、指定された時間間隔の後に接続を試みることができます。

于 2012-12-05T11:05:49.987 に答える