我有两个不同的NSB主机(主机A,主机B)
这是我在两台主机之间发布事件时所期望的事情。
完成。
这是我的最新消息。
主机A尝试查找处理程序并抛出错误:
System.InvalidOperationException: No handlers could be found for message type: SomeAssembly.Messages.Events.IHappened
at NServiceBus.LoadHandlersBehavior.Invoke(IncomingContext context, Action next) in c:\BuildAgent\work\1b05a2fea6e4cd32\src\NServiceBus.Core\Unicast\Behaviors\LoadHandlersBehavior.cs:line 31
at NServiceBus.BehaviorChain1.Invoke() in c:\BuildAgent\work\1b05a2fea6e4cd32\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 39
at NServiceBus.ApplyIncomingMessageMutatorsBehavior.Invoke(IncomingContext context, Action next) in c:\BuildAgent\work\1b05a2fea6e4cd32\src\NServiceBus.Core\MessageMutator\ApplyIncomingMessageMutatorsBehavior.cs:line 23
at NServiceBus.BehaviorChain1.Invoke() in c:\BuildAgent\work\1b05a2fea6e4cd32\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 3
主机A的配置不引用自己的队列,所以我很困惑为什么它试图处理事件。
<UnicastBusConfig>
<MessageEndpointMappings />
</UnicastBusConfig>
为什么Host A会尝试处理自己的事件?
回答的问题:
答案 0 :(得分:1)
有点猜测,但是:
您的端点(以及队列)的名称是否相同?您的端点需要具有唯一的名称。
编辑:
好的,打1:)
尽管如此,我认为Host A以某种方式订阅了IHappened。如果您正在使用Raven,并且知道如何导航其UI,请查看名为与Host A的端点相同的数据库,并查看Subscription集合。找到IHappened MessageType并查看主机A是否已订阅。如果是,您可能需要手动删除它(显然,如果这是生产,请不要在工作时间执行此操作!)。
如果这确实是问题,您应该在修复后再次运行Host A并确保它不会因某种原因重新添加。