Podczas tworzenia punktu końcowego NServiceBus SendOnly wystarczy po prostu podpalić i zapomnieć, tj. Po prostu wysłać wiadomość, a następnie zajmie się nią ktoś inny. Co wydaje się być tym, czego potrzebuję. Nie chcę żadnej komunikacji między magistralą a systemami obsługującymi komunikaty. System "A" chce powiadomić system "B" o czymś.SendOnly w NServiceBus
Cóż, tworzenie punktu końcowego SendOnly jest bardzo proste, ale co z systemem nasłuchującym wiadomości z punktu końcowego SendOnly.
Próbuję skonfigurować detektor w projekcie wiersza poleceń, który będzie obsługiwał wiadomości. Komunikaty są wysyłane do kolejki, ale nie są obsługiwane przez system "B".
Czy to niewłaściwe podejście? Czy przesada autobusu dla tego typu funkcji?
System 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);
}
}
}
System 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; }
}
Czy dodałeś MessageEndpointMappings w pliku app.config nadawcy? Z której wersji programu NServiceBus korzystasz? –
przepraszam, zapomniałem pliki konfiguracyjne dostarczane MessageEndpointMappings> UnicastBusConfig> Używam NserviceBus 3.0.3 –