私の主な質問は、NServiceBus でサブスクライバーをスケールアウトする方法です。私が間違っていること、または見逃したことを教えてください。セットアップに関するご質問には喜んでお答えします。
シナリオ:
サブスクライバーをスケールアウトしようとしたときに、間違った動作であることを願っています。マシン01にマスター、マシン02にワーカーがあります。両方のサービスをアンインストールし、マスターのコマンドラインとして「NServiceBus.Production NServiceBus.Master」を使用して再インストールしましたが、ワーカーにはNServiceBus.Workerを使用して再インストールしました. 2 つのスレッドが利用可能で、両方のサービスが正常に動作しています。サービスをオフにしてシナリオの最初の部分を実行したところ、キュー カウントは以下の最初のリストのようになりました。マスターとワーカーの両方にある 816 メッセージに注目してください。Production コマンド ラインでインストールすると、2 つのサービスが同じサブスクリプション情報を共有し、マスターだけがサブスクライブ先のイベントを受け取ると思っていましたが、間違っていました。
キュー カウントの 2 番目のセットは、両方のサービスを起動して処理を終了させた結果です。02 のワーカー サービスが、元の 816 とディストリビューターから渡されたものをどのように処理したかに注目してください。
マスターのゲートウェイ、再試行、およびタイムアウト キューと、ワーカーの再試行およびタイムアウト キューは、サービスの実行前と実行後に、キューとジャーナルの両方で値が 0 だったため、ここにはリストされていません。
// サービス オフ* ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ***
FormatName:DIRECT=OS:vm-01\private$\creditalertnotificationprocessor.distributor.control
Queue Messages: 0
Journal Messages: 0
FormatName:DIRECT=OS:vm-01\private$\creditalertnotificationprocessor.worker
Queue Messages: 0
Journal Messages: 0
FormatName: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
// サービス ON (および終了) * ** * ** * ** * ** * ** * ** * ** * ** * ** * ****
FormatName:DIRECT=OS:vm-01\private$\creditalertnotificationprocessor.distributor.control
Queue Messages: 0
Journal Messages: 1634
FormatName:DIRECT=OS:vm-01\private$\creditalertnotificationprocessor.worker
Queue Messages: 0
Journal Messages: 483
FormatName: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>