2

MassTransitServiceBusを使用してメッセージの処理を「一時停止」するための良い方法を考え出そうとしています。基本的に、Windowsサービスを実行したままにする必要がありますが、メッセージの処理を一時的に停止します。

これを行うには、サブスクリプショントークンを使用する方法と、サービスバスを破棄する方法の2つしか考えられません。

これを行うための好ましい方法はありますか、それとも私は間違った道を進んでいますか?

4

1 に答える 1

1

実行を継続する必要のある他のコードがあると仮定すると、それを別々のサービスに分割するだけの価値があるのではないでしょうか。

メッセージングを介した制御を提供する、より長い方法またはおそらく最初の方法を補完する方法は、メッセージングインフラストラクチャに使用されるコンテナ全体を作成/破棄できるサービスで構成された「制御」バス、つまり別のエンドポイントを使用することです。

もう1つの方法は、Topshelfを「シェルフ」構成で使用することです。Topshelf3より前は、どのシェルフが動作しているかを外部から制御できました。メッセージ処理ドメイン全体を、サービスおよびサービスの残りの部分から独立して制御するシェルフに配置します(独自のシェルフに配置します)。

欠点は次のとおりです。

  • サービスを(対話的に)デバッグするのは非常に困難です。
  • サービスを再パッケージ化する必要があります(.exeはもはやあなたのものではなく、サービスのみがあなたのものです)。
于 2013-04-01T13:24:32.893 に答える