nServiceBus с большими сообщениями XML - PullRequest
4 голосов
/ 04 мая 2010

Я прочитал об истинном обмене сообщениями и о том, что вместо отправки полезной нагрузки на шину, он отправляет идентификатор. В нашем случае у нас есть много унаследованных приложений / сервисов, и они были разработаны для получения полезной нагрузки сообщений (xml), близкой к 4 МБ (закрытие лимита MSMQ). Существует ли способ для шины nService обрабатывать большие полезные данные и автоматически сохранять сообщения или другой обходной путь, чтобы службы издателя / подписчика не беспокоились ни о размере полезной нагрузки, ни о том, как де / гидрировать Полезная нагрузка? Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 20 мая 2010

Вы можете использовать шаблон Последовательность сообщений .В NServiceBus вы должны разделить полезную нагрузку в отправителе, обернуть фрагменты в собственное сообщение «Последовательность», а затем внедрить сагу на другом конце, чтобы извлечь фрагменты и собрать их.Вам нужно приложить некоторые усилия для обработки ошибок и тайм-аутов.

1 голос
/ 17 июня 2010

Вы всегда можете использовать быстрое "исправление" сжатия сообщений.

POCO, сериализованный с двоичным сериализатором, может быть сжат с большим запасом. Мы видели наши сообщения, которые были сжаты на 20 МБ до 3,1 МБ.

Так что, если ваши сообщения колеблются около 4 МБ, может быть просто написать IMessageSerializer, который автоматически сжимает сообщение, пока оно находится в сети.

0 голосов
/ 04 мая 2010

Мне неизвестна какая-либо внутренняя возможность NServiceBus связывать дополнительные данные с внешним сообщением.

Я думаю, что вы правы - если вся полезная нагрузка не умещается в пределах лимита, то лучше сохранить ее в другом месте самостоятельно, а затем передать идентификатор.

Однако для вас может оказаться возможным спроектировать структуру сообщения таким образом, чтобы сообщение могло реализовывать интерфейс IHasPayload (который, возможно, включал бы идентификатор и тип?), И тогда логика вашего приложения могла бы иметь общий метод получения полезная нагрузка с сообщением IHasPayload.

...