2012-05-29 46 views
2

我在NServiceBus 3NServiceBus发送消息没有出现在终点

我试图将消息发送到端点有问题。消息类型和端点在配置配置为

<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主机不记录任何错误,它像消息只消失。这是最令人困惑的!

+0

是attatchments q交易? msmq死信队列中是否有任何结果?打开q上的日志记录,查看是否有消息正在从q处理。 –

+0

@AndreasÖhlund我相信q是交易性的。队列是由NServiceBus自动创建的 - 默认情况下,NSB是否创建事务队列? 我在死信队列中看不到任何消息。 随着日志的发展,我可以看到其他消息类型正在队列中,但ProcessAttachmentCommand消息未到达附件队列。 –

+0

是NSB创建它们的交易。如果你禁用了你的mutator,它会起作用吗? –

回答

3

事实证明,这是造成变化的MessageEndpointMappings错误。我在我的问题中发布的版本实际上并不是实际使用的版本。这是实际的版本:

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

第二MessageEndpointMappings走后并NSB使用该配置来确定GatewayMessages组件内的所有邮件类的目的地。

啊,人为错误!

+0

请标为已接受 –

+0

@AdamFyles完成!这是英国的一个长假周末。 –