【发布时间】:2012-06-03 21:29:44
【问题描述】:
我在 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 时,端点没有收到任何东西。随着端点停止,我什至看不到端点队列中出现任何消息。
在TransportMessageCompressionMutator 的MutateOutgoing 方法中有一个断点,我可以看到传出消息,所以看起来对Bus.Send 的调用是可以的,但它似乎没有到达端点。
除了我所包含的配置之外,还有其他可能影响消息传递的地方吗? 有什么方法可以在消息级别查看它们被引导到哪里?
我的 NServiceBus 主机没有记录任何错误,就像消息正在消失一样。这是最令人困惑的!
【问题讨论】:
-
附件是事务性的吗? msmq 死信队列中是否有任何内容?打开 q 上的日志以查看是否有来自该 q 的消息正在处理。
-
@AndreasÖhlund 我相信 q 是事务性的。队列由 NServiceBus 自动创建 - NSB 默认创建事务队列吗?我在死信队列中看不到任何消息。开启日记功能后,我可以看到队列中的其他消息类型,但 ProcessAttachmentCommand 消息没有到达附件队列。
-
是的,NSB 将它们创建为事务性的。如果你禁用你的mutator,它会起作用吗?
-
不幸的是,删除 mutator 没有任何效果。从其他程序集发送到同一端点的消息工作正常,所以我认为从这个特定的发送消息有问题。错误 q 中没有出现任何消息,NSB 也没有报告任何错误。
-
我去拿源码看看能不能调试到NSB。
标签: nservicebus