2013-07-25 6 views
2

я в настоящее время отправки объекта в MSMQ с помощью NServiceBus:Как установить IMessageFormatter при использовании метода отправки IBus в NServiceBus?

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.

Вопрос: Как и где я должен установить это при отправке сообщения в фрагменте выше.

Заранее благодарен!

ответ

2

Форматировщик сообщения NServiceBus должен использоваться всеми конечными точками обмена сообщениями для связи друг с другом. Есть четыре встроенных в NServiceBus: XML (по умолчанию, не то же самое, что .NET XmlSerializer), JSON, BSON и Binary.

ActiveXMessageFormatter - это класс System.Messaging и не имеет отношения к форматировщикам выше.

Похоже, вы пытаетесь использовать NServiceBus в качестве клиентского API для MSMQ, и это не совсем так. Вы можете технически реализовать свой собственный форматировщик сообщений для NServiceBus, но я бы не рекомендовал его в этом сценарии.

Если это одноразовая ситуация, я бы рассмотрел возможность взаимодействия непосредственно с MSMQ через пространство имен System.Messaging в этом сценарии. Использование транзакционного сообщения все равно будет взаимодействовать с внешней транзакцией, присутствующей в обработчике сообщений.

+2

Я бы также добавил, что вы не должны инициализировать новый экземпляр шины каждый раз, когда вы отправляете сообщение. –

Смежные вопросы