2010-03-17 57 views
1

我開始使用NServiceBus並對Pubsub示例有疑問。NServiceBus中的多個訂戶

我的意圖是讓Publisher1運行多個實例並接收發布者發送的消息。我還破解了發佈者只發送eventMessage類型的消息。

但是,如果我啓動發佈者和Subscriber1的三個實例,則其中只有一個會一次獲取該消息。

這是爲什麼?它是一個配置設置或其他東西?

這是我已經試過它返回一個異常「啓動端點時異常,錯誤已被記錄原因:。無法配置屬性的組件已配置之前,請首先調用‘配置’」:

using NServiceBus; 

namespace Subscriber1 
{ 
    public class EndpointConfig : IConfigureThisEndpoint, AsA_Server 
    { 
    } 

    public class OverrideInputQueue : IWantCustomInitialization 
    { 
     public void Init() 
     { 
      Configure 
       .Instance 
       .Configurer 
       .ConfigureProperty<NServiceBus.Config.MsmqTransportConfig>(t => t.InputQueue, "testQueue"); 
     } 
    } 
} 

/J

回答

1

NServiceBus假定每個進程有一個輸入隊列。確保每個用戶都配置有唯一的輸入隊列。如果不是所有三個都會輪詢產生你所描述的行爲的同一隊列。

要做到這一點,你可能必須複製粘貼sub1到3個不同的文件夾,修改app.config並啓動它們。

希望這會有所幫助!

+0

是的。但是,我必須以某種方式編程設置隊列。對??我發現像這樣: Configure.Instance.Configurer.ConfigureProperty (t => t.InputQueue,yourDynamicQueue); ..但不能得到它的工作。 任何提示?? – 2010-03-17 21:40:43

+0

是的,如果你不能複製粘貼文件夾和修改單獨的app.config的,你必須以編程方式設置它。 看看這裏: http://tech.groups.yahoo.com/group/nservicebus/message/6378 你可以提供一些你想要實現的更多細節嗎? 如果是關於分配負載,你應該看看使用分配器: http://nservicebus.com/Distributor.aspx – 2010-03-18 07:43:04

+0

我想要的是當某些事件發生時,同一客戶端的多個實例都接收消息。也許當有人創建一個客戶時,所有的客戶都會得到關於它的新聞。 – 2010-03-18 09:00:19

0

您應該使用這 -

Configure.Instance.Configurer.ConfigureProperty<NServiceBus.Unicast.Transport.Msmq.MsmqTransport>(msmq => msmq.InputQueue, "SomeQueueHere"); 

請確保您使用MsmqTransport,而不是MsmqTransportConfig如你所提到的。