Я пытаюсь подключить #Rebus в существующем системном ландшафте, уже использующем MSMQ для доставки сообщений.Проблемы с сериализацией с использованием Rebus
Конечно, цель состоит в том, чтобы позволить Rebus взять на себя все ;-), но на данный момент я не могу изменить какой-либо существующий код, уже работающий с транспортом MSMQ.
Итак, я думал, что могу просто использовать Rebus в новой части системы и отправлять сообщения в существующие очереди приложений, но что-то не так.
я могу настроить Головоломки так:
_bus = Configure.With(new WindsorContainerAdapter(container))
.Logging(l => l.ColoredConsole(LogLevel.Debug))
.Transport(t => t.UseMsmqInOneWayClientMode())
.MessageOwnership(d => d.FromRebusConfigurationSection())
.Serialization(s => s.UseBinarySerializer())
.CreateBus().Start();
Он отправляет сообщения, как и планировалось, но когда мой существующий приложение пытается прочитать из очереди, генерируется исключение:
«не может десериализуйте сообщение, переданное в качестве аргумента. Невозможно определить формат сериализации . "
Вызов метода в вопрос заключается в следующем:
// using System.Messaging.MessageQueue
receiveQueue.Receive(_queueTimeout, transaction);
Рытье через код, который я могу видеть, что DefaultFilter из Ребус более или менее, как нашего
return new MessagePropertyFilter
{
Label = true,
ArrivedTime = true,
Extension = true,
Body = true,
Id = true,
};
Наше MessagePropertyFilter настроено следующим образом:
var propertyFilter = new MessagePropertyFilter
{
Id = true,
Body = true,
Label = true
};
Возможно, это тонкое изменение действительно является причиной исключения? Мы также используем BinaryFormatter для сериализации сообщений.
Любая помощь будет принята с благодарностью :-)
Эй, спасибо. Итак, что вы на самом деле говорите, что #rebus нуждается в MSMQ-адаптере для бесперебойной работы с существующими системными средами с использованием «обычного» MSMQ? Конечно, было бы неплохо иметь возможность подключать #rebus в существующих ландшафтах, чтобы сразу воспользоваться вашим удивительным инструментом :-). –
Да, но я бы посоветовал вам относиться к интеграции с «устаревшим MSMQ», как и к любой другой интеграции, т. Е. Не подключаясь напрямую к шине, а вместо этого путем подключения к устаревшим частям – mookid8000