如何使用代码配置nservicebus msmqtransport
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用代码配置nservicebus msmqtransport相关的知识,希望对你有一定的参考价值。
我刚刚开始使用NServiceBus,在代码中配置Msmq Transport时无法弄清楚我缺少的是什么。如果我像这样配置发布者;
IBus bus = Configure.With()
.CastleWindsorBuilder()
.XmlSerializer()
.MsmqSubscriptionStorage()
.MsmqTransport()
.IsTransactional(true)
.PurgeOnStartup(false)
.UnicastBus()
.ImpersonateSender(false)
.CreateBus()
.Start();
bus.Publish(new Message(DateTime.Now));
和app.config一样
<configSections>
<section name="MsmqTransportConfig" type="NServiceBus.Config.MsmqTransportConfig, NServiceBus.Core" />
</configSections>
<MsmqTransportConfig
InputQueue="testapps_messagebus"
ErrorQueue="testapps_errors"
NumberOfWorkerThreads="1"
MaxRetries="5" />
然后一切正常 - 它将创建队列,我可以愉快地消息,但是如果我删除队列,然后再尝试使用这样的代码;
var config = Configure.With()
.CastleWindsorBuilder()
.XmlSerializer()
.UnicastBus()
.ImpersonateSender(false)
.MsmqSubscriptionStorage();
config
.Configurer
.ConfigureComponent<MsmqTransport>(NServiceBus.ObjectBuilder.ComponentCallModelEnum.None)
.ConfigureProperty(x => x.InputQueue, "testapps_messagebus")
.ConfigureProperty(x => x.NumberOfWorkerThreads, 1)
.ConfigureProperty(x => x.ErrorQueue, "testapps_errors")
.ConfigureProperty(x => x.MaxRetries, 5);
IBus bus = config
.CreateBus()
.Start();
bus.Publish(new Message(DateTime.Now));
消息似乎丢失了,因为它们没有出现在任何队列中也没有得到处理 - 我猜我错过了什么,但我看不到哪里。
答案
D'哦!发一个你一直困惑的问题并休息一下。当然,答案会让你感到满意,而且这一切都很明显!我忘了配置MsmqTransport,我的工作代码在下面对任何感兴趣的人。
Configure config = Configure.With();
config
.CastleWindsorBuilder()
.XmlSerializer()
.MsmqSubscriptionStorage()
.MsmqTransport()
.IsTransactional(true)
.PurgeOnStartup(false)
.UnicastBus()
.ImpersonateSender(false);
config
.MsmqSubscriptionStorage()
.Configurer
.ConfigureComponent(NServiceBus.ObjectBuilder.ComponentCallModelEnum.None)
.ConfigureProperty(x => x.InputQueue, "testapps_messagebus")
.ConfigureProperty(x => x.NumberOfWorkerThreads, 1)
.ConfigureProperty(x => x.ErrorQueue, "testapps_errors")
.ConfigureProperty(x => x.MaxRetries, 5);
IBus bus = config
.CreateBus()
.Start();
bus.Publish(new Message(DateTime.Now));
以上是关于如何使用代码配置nservicebus msmqtransport的主要内容,如果未能解决你的问题,请参考以下文章
NServiceBus UseTransport 在升级到 .NET 6 后不起作用