私はnserviceバスで遊び始めたばかりで、パブリッシングを機能させようとしています。いくつかのメッセージが欠落しているように見えるリスナーがいます。それはで構成されています
<MsmqTransportConfig
InputQueue="InformMessages"
ErrorQueue="error"
NumberOfWorkerThreads="5"
MaxRetries="5"
/>
興味深いことに、NumberOfWorkerThreadsを1に設定すると、他のすべてのメッセージが常に失われます。値が大きいほど、確定性が低いように見えます。私のメッセージハンドラーには
class MessageHandler : IMessageHandler<ICourseRegister>
{
public void Handle(ICourseRegister message)
{
Console.WriteLine("Message dun got gotted");
Console.WriteLine("Course name is: " + message.CourseName);
}
private IBus bus;
public IBus Bus
{
set { this.bus = value; }
}
}
バスは次のように構成されています
var bus = NServiceBus.Configure.With()
.SpringBuilder()
.XmlSerializer()
.MsmqTransport()
.IsTransactional(true)
.PurgeOnStartup(false)
.UnicastBus()
.ImpersonateSender(false)
.LoadMessageHandlers()
.CreateBus()
.Start();
次のメッセージを受信する準備ができて解放されるように、ハンドラーを終了する必要がありますか、ハンドラーがビジーの場合にメッセージを保持するためのクライアント側のキューがあるようにする必要があります。メッセージを送信する間隔は重要ではないようです。20秒かかる可能性がありますが、リスナーはまだすべてのメッセージを取得していません。