2012-04-17 46 views
5

當創建一個NServiceBus SendOnly端點時,其目的僅僅是發送一個消息,然後由其他人來處理。這似乎是我需要的東西。我不想在總線和系統處理消息之間進行任何通信。系統「A」想要通知系統「B」某事。SendOnly in NServiceBus

那麼創建一個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; } 
} 
+0

你有沒有在發件人的app.config中添加的MessageEndpointMappings?此外,該NServiceBus的版本,您使用的? – 2012-04-17 10:12:24

+0

抱歉,忘記了.configs <添加消息= 「DLL」 端點= 「QUEUENAME」/> 我使用NserviceBus 3.0.3 – 2012-04-17 10:13:10

回答

5

在你需要如下更新它的MessageEndpointMappings:

  1. 與組裝的含名稱替換DLL您的消息(例如「消息」)
  2. 更改Endpoint nt添加到系統B正在讀取的隊列的名稱(您可以通過查看專用隊列下的MSMQ管理單元來檢查隊列名稱)。
<add Messages="Messages" Endpoint="SystemB" /> 

NServiceBus 3自動創建基於所述主機組件的命名空間中的隊列名稱。

此外,您可能想看看使用NServiceBus.Host來承載您的處理程序,而不是你自己的控制檯應用程序。

+0

謝謝,我認爲端點對系統B應該是系統A使用......但顯然不是:-)同一隊列中的消息 – 2012-04-18 06:35:56