【问题标题】:NServiceBus send messages not appearing at endpointNServiceBus 发送消息未出现在端点
【发布时间】: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 时,端点没有收到任何东西。随着端点停止,我什至看不到端点队列中出现任何消​​息。

TransportMessageCompressionMutatorMutateOutgoing 方法中有一个断点,我可以看到传出消息,所以看起来对Bus.Send 的调用是可以的,但它似乎没有到达端点。

除了我所包含的配置之外,还有其他可能影响消息传递的地方吗? 有什么方法可以在消息级别查看它们被引导到哪里?

我的 NServiceBus 主机没有记录任何错误,就像消息正在消失一样。这是最令人困惑的!

【问题讨论】:

  • 附件是事务性的吗? msmq 死信队列中是否有任何内容?打开 q 上的日志以查看是否有来自该 q 的消息正在处理。
  • @AndreasÖhlund 我相信 q 是事务性的。队列由 NServiceBus 自动创建 - NSB 默认创建事务队列吗?我在死信队列中看不到任何消息。开启日记功能后,我可以看到队列中的其他消息类型,但 ProcessAttachmentCommand 消息没有到达附件队列。
  • 是的,NSB 将它们创建为事务性的。如果你禁用你的mutator,它会起作用吗?
  • 不幸的是,删除 mutator 没有任何效果。从其他程序集发送到同一端点的消息工作正常,所以我认为从这个特定的发送消息有问题。错误 q 中没有出现任何消​​息,NSB 也没有报告任何错误。
  • 我去拿源码看看能不能调试到NSB。

标签: nservicebus


【解决方案1】:

原来这是由更改 MessageEndpointMappings 引起的错误。我在问题中发布的版本实际上并不是正在使用的版本。这是实际版本:

<UnicastBusConfig>
    <MessageEndpointMappings>
        <add Messages="GatewayMessages.ProcessAttachmentCommand, GatewayMessages" Endpoint="Attachments"/>
        <add Messages="GatewayMessages" Endpoint="Services.Saga"/>
    </MessageEndpointMappings>
</UnicastBusConfig>

第二个MessageEndpointMappings 已进入,NSB 正在使用该配置来确定GatewayMessages 程序集中所有消息类的目的地。

啊,人为错误!

【讨论】:

  • @AdamFyles 完成!在英国度过了一个漫长的假期周末。
猜你喜欢
  • 1970-01-01
  • 2015-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-21
相关资源
最近更新 更多