私はさまざまなハードウェアタイプからのステータス情報の受信をサポートするシステムを開発しています。各ハードウェアは同じステータス情報(緯度、経度)を報告していますが、各ハードウェアタイプはこの情報を報告するために固有のプロトコルを使用します。このため、私は、各デバイスの種類ごとに1つずつ、そのデバイスのプロトコルをリッスンして解析する複数のサービスを用意しています。NServiceBusエンドポイントは同じメッセージの複数のパブリッシャにサブスクライブできますか?
public interface IPositionMessage : IMessage
{
string UnitName { get; set; }
double Latitude { get; set; }
double Longitude { get; set; }
}
私は何の問題私の最初のサービスの設定がありませんでしたが、今私は私の第2のサービスを設定していますことを、私はそれを見つけている:これらのサービスのそれぞれが共通のメッセージを使用してステータス情報を公開するために私が希望します私の購読者は複数の出版社から同じメッセージを購読することができません。
同様のquestion on the NServiceBus yahoo groupでは、共通のメッセージをコマンドに変換し、Bus.PublishではなくBus.Sendを使用することをお勧めします。実際に起こっていることはイベントです(ユニットは既にポジションに到着しており、新しいポジションを報告しています)ので、このシナリオでは意味をなさないと思います。これをコマンドに変換すると、私はこのイベントの潜在的な加入者をすべて事前に知る必要があります。もう1つの可能な解決策は、各サービスがBus.Sendになる集約/再発行者を作成し、メッセージを単一の発行元から再発行することです。これは不要なボトルネックのようです。
複数のサイト運営者から同じメッセージを定期購読する方法はありますか?
AFAIK、複数のLOGICALパブリッシャーから公開するのは悪い習慣です。 –
私の見解では、各サービスは、1つの論理パブリッシャーの一部として参加する物理ノードです。サービスの実装が1つで、2台目のマシンにインストールする必要がある場合は、私のシナリオは変わりません。 – JadeMason