在NServiceBus中使用IBus的Send方法时如何设置IMessageFormatter?

时间:2013-07-25 14:47:32

标签: .net msmq nservicebus

我目前正通过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。

问题:在上面的代码段中发送消息时,如何/在何处设置此消息。

提前致谢!

1 个答案:

答案 0 :(得分:2)

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

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

这几乎听起来像是你在尝试使用NServiceBus作为MSMQ的客户端API,而这并不是它的真实含义。您可以在技术上为NServiceBus实现自己的消息格式化程序,但我不建议在这种情况下使用它。

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