我在NServiceBus 3中遇到了问题。
我正在尝试将消息发送到端点。消息类型和端点在配置中配置为
<UnicastBusConfig>
<MessageEndpointMappings>
<add Messages="GatewayMessages.ProcessAttachmentCommand, GatewayMessages" Endpoint="Attachments"/>
</MessageEndpointMappings>
</UnicastBusConfig>
端点在其EndpointConfig.cs中具有以下配置:
Configure
.With()
.DefineEndpointName("Attachments")
.DefaultBuilder()
.DBSubcriptionStorage()
.XmlSerializer()
.FileShareDataBus(@"C:\Attachments\nservicebus\databus")
.MsmqTransport()
.UnicastBus()
.LoadMessageHandlers()
.CreateBus()
.Start(() => Configure.Instance.ForInstallationOn<NServiceBus.Installation.Environments.Windows>().Install());
我还有一个IMutateTransportMessages
类配置了
Configure.Instance.Configurer.ConfigureComponent<TransportMessageCompressionMutator>(DependencyLifecycle.InstancePerCall);
我遇到的问题是当使用ProcessAttachmentCommand调用Bus.Send时,端点没有收到任何内容。在端点停止后,我甚至没有看到端点队列中出现任何消息。
在MutateOutgoing
的{{1}}方法中使用断点我可以看到外发消息,所以看起来对TransportMessageCompressionMutator
的调用是正常的,但似乎不是去终点。
除了我所包含的可能影响邮件传递的配置之外,还有其他地方吗? 在消息级别是否有任何方法可以查看他们被定向的位置?
我的NServiceBus主机没有记录任何错误,就像消息正在消失一样。这是最令人困惑的!
答案 0 :(得分:3)
原来这是由MessageEndpointMappings
更改引起的错误。我在我的问题中发布的版本实际上并不是正在使用的版本。这是实际版本:
<UnicastBusConfig>
<MessageEndpointMappings>
<add Messages="GatewayMessages.ProcessAttachmentCommand, GatewayMessages" Endpoint="Attachments"/>
<add Messages="GatewayMessages" Endpoint="Services.Saga"/>
</MessageEndpointMappings>
</UnicastBusConfig>
第二个MessageEndpointMappings
已经进入,NSB正在使用该配置来确定GatewayMessages
程序集中所有消息类的目标。
啊,人为错误!