送信 Web アプリケーションから、NServiceBus はすべてのタイプをスキャンしてエンドポイントに割り当てます。これには約 3 分かかり、その後トランザクションがタイムアウトします。スキャンであるアセンブリを制限するために configure.with(assemblies) を試しました。メッセージの実装を制限するために、目立たない configure.definingas メソッドの「構成よりも規約」を試しました。古いバージョンから最新のバージョンに移行しているため、IMessage の実装規則を引き続き使用しています。
送信者のbus.startコードは次のとおりです
私は煙に取り組んでいます...助けていただければ幸いです。
//hack for the moment
string dir = System.Web.HttpContext.Current.Server.MapPath("/");
dir = Path.Combine(dir, "bin");
TraceDirect("Shared", System.Diagnostics.TraceEventType.Information, dir);
System.Reflection.Assembly[] asss = { System.Reflection.Assembly.LoadFile(Path.Combine(dir, "myfirst.dll")), System.Reflection.Assembly.LoadFile(Path.Combine(dir, "mysecond.dll")) };
try
{
using (TransactionScope ambient = new TransactionScope( TransactionScopeOption.Suppress))
{
theMagicBus = NServiceBus.Configure.With(asss)
.DefineEndpointName("app")
.DefiningMessagesAs(t => typeof(IMessage).IsAssignableFrom(t))
.DefiningCommandsAs(t => typeof(ICommand).IsAssignableFrom(t))
.DefiningEventsAs(t => typeof(IEvent).IsAssignableFrom(t))
.DefaultBuilder()
.XmlSerializer()
.MsmqTransport().TransactionTimeout(TimeSpan.FromMinutes(5))
.IsTransactional(true)
.PurgeOnStartup(false)
.UnicastBus()
.ImpersonateSender(false)
.Log4Net<NServiceBusAppender>(a => { a.Name = "Shared"; })
.CreateBus()
.Start(() => Configure.Instance.ForInstallationOn<NServiceBus.Installation.Environments.Windows>().Install());}}
そして、ここに私の設定があります
<MsmqTransportConfig NumberOfWorkerThreads="1" MaxRetries="5" />
<MessageForwardingInCaseOfFaultConfig ErrorQueue="error"/>
<UnicastBusConfig>
<MessageEndpointMappings>
<add Messages="myfirst" Endpoint="endpoint"/>
<add Messages="mysecond" Endpoint="msgsvcpubinputqueue"/>
</MessageEndpointMappings>
</UnicastBusConfig>
</MsmqTransportConfig>