我正在使用 NServiceBus 2.5 并尝试让 NServiceBus PubSub 示例的简化版本与分销商一起使用。简化:
- 1 个出版商
- 经销商
- 1 个订阅者 所有这些都在一台机器上。
在我继续处理更复杂的事情之前,我想先完成这项工作,例如单个分销商背后的多个订户、多台机器等。
首先,我得到了简化的 pub sub 示例,在没有分发器的情况下工作(即 1 个 pub 和 1 个 sub - 我得到了很好的工作)。
据我了解,它应该工作的方式是:分发器定义自己的控制和数据队列。发布者有它的控制队列,但没有其他配置引用这个队列。发布者指的是分发数据队列。订阅者指的是分发者的数据和控制队列。
我无法让简化的 pub-sub 分发器使用此配置。我已经对发布者进行了一些调试,我发现发布者的 Bus.Publish 没有找到任何要发布的订阅者。
有什么想法我做错了什么以及我需要做什么才能使其正常工作?
以下是每个配置:
出版商:
<?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>