2

我目前正在通过 NServiceBus 向 MSMQ 发送一个对象:

public void SendMessage(AvailInfo message) 
{
    var Bus = Configure.With()
          .DefaultBuilder()
          .Log4Net()
          .UseTransport<Msmq>()
          .XmlSerializer()
          .UnicastBus()
          .CreateBus()
          .Start(() => Configure.Instance.ForInstallationOn<Windows>().Install()); 

    bus.Send(message);
}

一切正常,除了现在队列的消费者要求我们明确使用 ActiveXMessageFormatter。

问题:在上面的片段中发送消息时,我将如何/在哪里进行设置。

提前致谢!

4

1 回答 1

2

NServiceBus 消息格式化程序应该被所有消息传递端点用于相互通信。NServiceBus 内置了四种:XML(默认,与 .NET XmlSerializer 不同)、JSON、BSON 和 Binary。

ActiveXMessageFormatter 是一个 System.Messaging 类,与上面的格式化程序无关。

听起来您好像在尝试将 NServiceBus 用作 MSMQ 的客户端 API,但实际上并非如此。您可以在技术上为 NServiceBus 实现自己的消息格式化程序,但在这种情况下我不推荐它。

如果这是一次性情况,我会考虑在这种情况下通过 System.Messaging 命名空间直接与 MSMQ 交互。使用事务性消息仍将与消息处理程序中存在的环境事务交互。

于 2013-07-25T16:18:09.360 回答