2011-06-10 47 views
0

我正在使用NServiceBus 2.5並試圖獲得與分銷商合作的NServiceBus PubSub示例的簡化版本。簡化:NServiceBus:獲取PubSub與分銷商合作的問題

  • 1出版商
  • 分銷
  • 1用戶 所有這一切都是在一臺機器上。

我想在我移動到像一個單一的分銷商背後多用戶,多機等更復雜的事情得到這個工作

首先,我得到了簡化酒館子例如不工作總代理(即1個酒吧和1個分 - 我得到的工作很好)。

據我所知,它的工作方式是: 經銷商定義自己的控制和數據隊列。 發佈者擁有控制隊列,但沒有其他配置引用此隊列。發佈者引用分發數據隊列。 訂閱者是指分發者數據和控制隊列。

我一直無法獲得使用此配置的簡化pub-sub分銷商。我已經對發佈者進行了一些調試,我發現發佈者的Bus.Publish沒有發現要發佈的任何訂閱者。

任何想法我做錯了什麼,我需要做什麼來得到這個工作?

這裏的CONFIGS每個那些:

出版商

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
    <section name="MsmqTransportConfig" type="NServiceBus.Config.MsmqTransportConfig, NServiceBus.Core" /> 
    <section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core" /> 
    </configSections> 

    <MsmqTransportConfig InputQueue="MyPublisherInputQueue" ErrorQueue="error" NumberOfWorkerThreads="1" MaxRetries="5" /> 

    <UnicastBusConfig> 
    <MessageEndpointMappings> 
     <add Messages="MyMessages" Endpoint="distributorDataBus" /> 
    </MessageEndpointMappings> 
    </UnicastBusConfig> 

</configuration> 

分銷

<add key="DataInputQueue" value="distributorDataBus"/> 
    <add key="ControlInputQueue" value="distributorControlBus"/> 
    <add key="ErrorQueue" value="error"/> 
    <add key="StorageQueue" value="distributorStorage"/> 

    <add key="NameSpace" value="http://www.UdiDahan.com"/> 
    <!-- relevant for a Serialization of "interfaces" or "xml" --> 

    <add key="Serialization" value="xml"/> 
    <!-- can be either "xml", or "binary" --> 
    </appSettings> 
</configuration> 

用戶

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
    <section name="MsmqTransportConfig" type="NServiceBus.Config.MsmqTransportConfig, NServiceBus.Core" /> 
    <section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core" /> 
    </configSections> 

    <MsmqTransportConfig 
    InputQueue="Subscriber1InputQueue_1" 
    ErrorQueue="error" 
    NumberOfWorkerThreads="1" 
    MaxRetries="5" 
    /> 

    <UnicastBusConfig DistributorControlAddress="distributorControlBus" DistributorDataAddress="distributorDataBus"> 
    <MessageEndpointMappings /> 
    </UnicastBusConfig> 

</configuration> 

回答

1

好吧,我終於得到了這個工作。關鍵線索來自這裏:http://tech.groups.yahoo.com/group/nservicebus/message/8525

基本上,用戶需要通過添加本節將指向出版商:

<UnicastBusConfig DistributorControlAddress="distributorControlBus" DistributorDataAddress="distributorDataBus"> 
    <MessageEndpointMappings> 
    <add Messages="MyMessages" Endpoint="MyPublisherInputQueue" /> 
    </MessageEndpointMappings> 
</UnicastBusConfig> 

我最初以爲這是使用戶寄存器直接與出版商,但不是。我測試了兩個不同的訂閱者指向同一個分發者,並指出只有一個訂閱者獲得任何單個事件發佈。