NServiceBus需要在不同的环境中进行明确的消息注册

NServiceBus需要在不同的环境中进行明确的消息注册,nservicebus,Nservicebus,我在所有环境中运行64位windows 7。通过包含我的两个程序集来隐式注册所有消息在开发过程中起作用,但QA和Prod需要显式注册,否则NService在启动时会引发异常。 有没有人遇到过类似的问题?你有解决办法吗 例外 Source:NServiceBus.Core System.InvalidOperationException - No destination could be found for message type xyz.Application.Claims.Messaging

我在所有环境中运行64位windows 7。通过包含我的两个程序集来隐式注册所有消息在开发过程中起作用,但QA和Prod需要显式注册,否则NService在启动时会引发异常。 有没有人遇到过类似的问题?你有解决办法吗

例外

Source:NServiceBus.Core System.InvalidOperationException - No destination could be found for message type
xyz.Application.Claims.Messaging.IGlassWorkflowEventMessage. Check the <MessageEndpointMapping> section of the configuration 
of this endpoint for an entry either for this specific message type or for its assembly.
Stack:   at NServiceBus.Unicast.UnicastBus.Subscribe(Type messageType, Predicate`1 condition)
at CEI.Application.Claims.GlassSubscriber.SubscriberEndpointStartup.Run() in c:\xyz\tfs\Claimslink\DEV\Bus\GlassSubscriber\Config\SubscriberEndpointStartup.cs:line 36
at NServiceBus.Host.Internal.ConfigManager.<>c__DisplayClass1.<Startup>b__0()
来源:NServiceBus.Core System.invalidoOperationException-找不到消息类型的目标
xyz.Application.Claims.Messaging.IGlassWorkflowEventMessage。检查配置的部分
为此特定消息类型或其程序集的条目设置此终结点的。
堆栈:位于NServiceBus.Unicast.UnicastBus.Subscribe(类型messageType,谓词`1条件)
在c:\xyz\tfs\Claimslink\DEV\Bus\GlassSubscriber\Config\SubscriberEndpointStartup.cs中的CEI.Application.Claims.GlassSubscriber.SubscriberEndpointStartup.Run()处:第36行
在NServiceBus.Host.Internal.ConfigManager.c_uudisplayClass1.b_uu0()上
我的配置条目

<!--This works in my development environment-->
<MsmqTransportConfig InputQueue="GlassSubscriber" ErrorQueue="GlassSubscriberError" NumberOfWorkerThreads="1" MaxRetries="2"/>
<UnicastBusConfig>
<MessageEndpointMappings>

  <!--Just add assemblies, all messages recognized -->
  <add Messages="xyz.shared.impl" Endpoint="msgsvcpubinputqueue"/>
  <add Messages="xyz.Claims.impl" Endpoint="msgsvcpubinputqueue"/>
</MessageEndpointMappings>
</UnicastBusConfig>


 <!--QA and Production always require explicit message registrations??-->
 <MsmqTransportConfig InputQueue="GlassSubscriber" ErrorQueue="GlassSubscriberError" NumberOfWorkerThreads="1" MaxRetries="2"/>
 <UnicastBusConfig>
<MessageEndpointMappings>
  <add Messages="xyz.shared.impl" Endpoint="msgsvcpubinputqueue"/>
  <add Messages="xyz.Claims.impl" Endpoint="msgsvcpubinputqueue"/>

  <!--We have dozens of messages, explicitly registering for each subscriber is a pain-->

  <add Messages="xyz.Application.Claims.Messaging.IGlassWorkflowEventMessage, xyz.Claims.impl" Endpoint="msgsvcpubinputqueue"/>
  <add Messages="xyz.Application.Claims.Messaging.GlassWorkflowEventMessage, xyz.Claims.impl" Endpoint="msgsvcpubinputqueue"/>
</MessageEndpointMappings>
 </UnicastBusConfig>


如果在“msgsvcpubinputqueue”之后添加“@machineName”,其中machineName是运行NSB进程的机器,会发生什么情况?所有3个环境Dev、QA、Prod、发布服务器都与订阅服务器在同一台机器上运行。哈,这很奇怪。如果显式权限有效,则无法获得权限。您使用的是哪一版本的NServiceBus?2.6.0.1511我们使用Nbus已经两年了,以前没有出现过此问题。我无法确定它发生的确切时间,但可能与发布有关。我应该注意,未卸载且仅升级到最新NServiceBus.Host.exe的旧订阅服务器不需要显式注册。这个问题只发生在我们在Dev中测试过的新订阅服务器上(没有显式注册),然后安装在QA和Prod中。在所有情况下,QA和Prod都通过编辑配置和添加显式消息注册来工作,没有代码更改。