NServiceBus SendOnlyエンドポイントを作成するときの目的は、ファイアアンドフォーゲットだけです。つまり、メッセージを送信するだけで、他の誰かがそれを処理します。それは私が必要としているもののようです。バスとシステム処理メッセージの間の通信は必要ありません。システム「A」は、システム「B」に何かについて通知したいと考えています。
非常に単純な場合はSendOnlyエンドポイントの作成ですが、SendOnlyエンドポイントからのメッセージをリッスンするシステムについてはどうでしょうか。
メッセージを処理するコマンドラインプロジェクトでリスナーを設定しようとしています。メッセージはキューに送信されますが、システム「B」によって処理されません。
これは間違ったアプローチですか?このタイプの機能のバスはやり過ぎですか?
システムA:
public class Program
{
static void Main(string[] args)
{
var container = new UnityContainer();
var bus = Configure.With()
.UnityBuilder(container)
.JsonSerializer()
.Log4Net()
.MsmqTransport()
.UnicastBus()
.SendOnly();
while(true)
{
Console.WriteLine("Send a message");
var message = new Message(Console.ReadLine());
bus.Send(message);
}
}
}
システムB:
class Program
{
static void Main(string[] args)
{
var container = new UnityContainer();
var bus = Configure.With()
.UnityBuilder(container)
.JsonSerializer()
.Log4Net()
.MsmqTransport()
.UnicastBus()
.LoadMessageHandlers()
.CreateBus()
.Start();
Console.WriteLine("Waiting for messages...");
while(true)
{
}
}
}
public class MessageHandler : IHandleMessages<Message>
{
public void Handle(Message message)
{
Console.WriteLine(message.Data);
}
}
public class Message : IMessage
{
public Message()
{
}
public Message(string data)
{
Data = data;
}
public string Data { get; set; }
}