2

私はたくさん検索しましたが、それでも WCF サービスの MSMQ 実装について疑問はほとんどありませんでした。したがって、私はこの質問をしました。

単一のパブリッシャーと複数のサブスクライバーの非同期メッセージ システムを実装したいと考えています。パブリッシャーとして WCF サービスを使用することにしました。複数のサブスクライバーとして、異なるマシンにウィンドウ サービスの複数のインスタンスがあります。

Q. このモデルを古い MSMQ アプローチとして実装するにはどうすればよいですか?

次のタイプのオブジェクトがメッセージで使用されます

[Serializable]
public class Message
{
public string Signal{get;set;}
public Guid Identifier{get;set;}
}

上記のクラスでは、Windows サービスが Identifier を使用して、メッセージがそのサービスに対して発行されたかどうかを判断します。

Q. 異なるウィンドウ サービスはどのように同じキューを読み取りますか? Q. キューはどこでホストする必要がありますか? Q. Window サービス(サブスクライバー)から WCF サービス(パブリッシャー)に確認を送信することはできますか?

どんな助けでも大歓迎です。

4

1 に答える 1

3

あなたの質問に答えて:

このモデルを古い MSMQ アプローチとしてどのように実装できるか知りたいですか?

まず、MSMQ はそのままではパブリッシュ サブスクライブをサポートしていません。

異なるウィンドウ サービスが同じキューをどのように読み取るか?

したがって、パブリッシュ サブスクライブでは、キューは 1 つではありません。代わりに複数のキューがあり、実際にはパブ サブ シナリオの参加者ごとに 1 つです。したがって、各パブリッシャーにはキューがあり、各サブスクライバーにはキューがあります。

この構成により、サブスクライバーはサブスクライブ/サブスクライブ解除メッセージをパブリッシャーに送信でき、パブリッシャーはサブスクリプションの評価後に必要に応じてサブスクライバーにメッセージを送信できます。

キューをホストする場所は?

これらのキューは、各参加者に対してローカルでホストすることも、クラスター化された場所で一緒にホストすることもできます。

Window サービス(サブスクライバー)から WCF サービス(パブリッシャー)に確認を送信することはできますか?

MSMQ は、 response-queueおよびcorrelation-idメッセージ ヘッダー フィールドを介して要求/応答メッセージングの基本的なサポートを提供しますが、これはすぐに使用できるものではありません (これらの値を使用してプログラミングする必要があるため)。

WCF を使用する必要がない場合は、nservicebusと呼ばれるかなり成熟したプラットフォームがあり、MSMQ の上にあり、必要なすべてのメッセージング パターンをサポートします。

于 2012-07-17T13:42:19.313 に答える