2011-06-10 48 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> 

我最初以为这是使用户寄存器直接与出版商,但不是。我测试了两个不同的订阅者指向同一个分发者,并指出只有一个订阅者获得任何单个事件发布。