我的核心问题是如何在 NServiceBus 中扩展订阅者。请让我知道我做错了什么或我错过了什么。我很乐意回答有关我的设置的任何问题。
设想:
我在尝试扩展订户时看到了我希望的不正确行为。我在机器 01 上安装了 master,在机器 02 上安装了 worker。我卸载了这两个服务并重新安装了“NServiceBus.Production NServiceBus.Master”作为 master 的命令行,但使用 NServiceBus.Worker 作为 worker 的命令行. 两个服务都运行良好,有两个线程可用。我在关闭服务的情况下运行场景的第一部分,队列计数如下面的第一个列表所示。注意到 Master 和 Worker 中的 816 条消息了吗?我以为使用 Production 命令行安装会导致两个服务共享相同的订阅信息,并且只有 master 会收到订阅的事件,但我错了。
第二组队列计数是启动两个服务并让它们完成处理的结果。请注意 02 上的工作人员服务如何处理他原来的 816 以及分销商给他的任何东西?
此处未列出主服务器的网关、重试和超时队列以及工作人员的重试和超时队列,因为在运行服务之前和之后,队列和日志的值均为 0
// 服务关闭* ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ***
格式名称:DIRECT=OS:vm-01\private$\creditalertnotificationprocessor.distributor.control
Queue Messages: 0
Journal Messages: 0
格式名称:DIRECT=OS:vm-01\private$\creditalertnotificationprocessor.worker
Queue Messages: 0
Journal Messages: 0
格式名称:DIRECT=OS:vm-01\private$\creditalertnotificationprocessor.distributor.storage
Queue Messages: 5
Journal Messages: 0
FormatName:DIRECT=OS:vm-01\private$\creditalertnotificationprocessor
Queue Messages: 816
Journal Messages: 0
FormatName:DIRECT=OS:vm-02\private$\creditalertnotificationprocessor
Queue Messages: 816
Journal Messages: 0
// 服务开启(并完成)* ** * ** * ** * ** * ** * ** * ** * ** * ** * ****
格式名称:DIRECT=OS:vm-01\private$\creditalertnotificationprocessor.distributor.control
Queue Messages: 0
Journal Messages: 1634
格式名称:DIRECT=OS:vm-01\private$\creditalertnotificationprocessor.worker
Queue Messages: 0
Journal Messages: 483
格式名称:DIRECT=OS:vm-01\private$\creditalertnotificationprocessor.distributor.storage
Queue Messages: 824
Journal Messages: 817
FormatName:DIRECT=OS:vm-01\private$\creditalertnotificationprocessor
Queue Messages: 0
Journal Messages: 816
FormatName:DIRECT=OS:vm-02\private$\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>