我的核心问题是如何在NServiceBus中扩展订户。请让我知道我做错了什么或我错过了什么。我很乐意回答有关我的设置的任何问题。
情景:
在我试图扩展用户时,我看到了我希望的错误行为。我有机器01上的主机和机器02上的工作器。我卸载了两个服务并重新安装了“NServiceBus.Production NServiceBus.Master”作为主机的命令行和相同的但是与工作人员的NServiceBus.Worker 。两个服务都运行正常,有两个线程可用。我运行了我的场景的第一部分,关闭了服务,队列计数如下面的第一个列表中所示。注意Master和Worker中的816条消息?我认为使用Production命令行安装会导致两个服务共享相同的订阅信息,只有master会收到订阅的事件,但我错了。这些都是工人和主人的纯粹欺骗。
第二组队列计数是启动两个服务并让它们完成处理的结果。请注意02上的工作服务如何处理他原来的816加上经销商给他的任何东西?
主服务器的网关,重试和超时队列以及工作人员的重试和超时队列未在此处列出,因为在运行服务之前和之后,队列和日志的值均为0
//服务关闭 * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ***
FORMATNAME:DIRECT = OS:VM-01 \私人$ \ creditalertnotificationprocessor.distributor.control
Queue Messages: 0
Journal Messages: 0
FORMATNAME:DIRECT = OS:VM-01 \私人$ \ creditalertnotificationprocessor.worker
Queue Messages: 0
Journal Messages: 0
FORMATNAME:DIRECT = OS:VM-01 \私人$ \ creditalertnotificationprocessor.distributor.storage
Queue Messages: 5
Journal Messages: 0
FORMATNAME:DIRECT = OS:VM-01 \私人$ \ creditalertnotificationprocessor
Queue Messages: 816
Journal Messages: 0
FORMATNAME:DIRECT = OS:VM-02 \私人$ \ creditalertnotificationprocessor
Queue Messages: 816
Journal Messages: 0
//服务开启(已完成) * ** * ** * ** * ** * ** * ** * ** * ** * ** * ****
FORMATNAME:DIRECT = OS:VM-01 \私人$ \ creditalertnotificationprocessor.distributor.control
Queue Messages: 0
Journal Messages: 1634
FORMATNAME:DIRECT = OS:VM-01 \私人$ \ creditalertnotificationprocessor.worker
Queue Messages: 0
Journal Messages: 483
FORMATNAME:DIRECT = OS:VM-01 \私人$ \ creditalertnotificationprocessor.distributor.storage
Queue Messages: 824
Journal Messages: 817
FORMATNAME:DIRECT = OS:VM-01 \私人$ \ creditalertnotificationprocessor
Queue Messages: 0
Journal Messages: 816
FORMATNAME:DIRECT = OS:VM-02 \私人$ \ creditalertnotificationprocessor
Queue Messages: 0
Journal Messages: 1149
工作人员配置文件...
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core" />
<section name="MessageForwardingInCaseOfFaultConfig" type="NServiceBus.Config.MessageForwardingInCaseOfFaultConfig, NServiceBus.Core" />
<section name="MsmqTransportConfig" type="NServiceBus.Config.MsmqTransportConfig, NServiceBus.Core" />
<section name="MasterNodeConfig" type="NServiceBus.Config.MasterNodeConfig, NServiceBus.Core" />
</configSections>
<MasterNodeConfig Node="vm-01"/>
<UnicastBusConfig>
<MessageEndpointMappings>
<add Messages="Sample.Common.Messages.Commands.LogMessage, Sample.BusFramework.Common" Endpoint="Sample.BusFramework.LogMessageProcessor@vm-01" />
<add Messages="Sample.Credit" Endpoint="Sample.Credit.AlertBackfillProcessor" />
</MessageEndpointMappings>
</UnicastBusConfig>
<MessageForwardingInCaseOfFaultConfig ErrorQueue="error" />
<MsmqTransportConfig NumberOfWorkerThreads="2" MaxRetries="1" />
<connectionStrings>
<add name="ApplicationLog" connectionString="" providerName="" />
<add name="ProductFulfillment" connectionString="" providerName="" />
</connectionStrings>
<appSettings>
<add key="BusLoggingThreshold" value="DEBUG"/>
</appSettings>
</configuration>
答案 0 :(得分:1)
您无需通过配置中的MessageEndpointMappings进行订阅。 Master将订阅并委派处理到此节点。您看到重复,因为工作人员自己订阅。