2014-01-27 1 views
2

В настоящее время у нас есть процесс, который включает отправку стороннего файла xml с изменениями, произошедшими в нашей системе.Использование NServiceBus, как я могу обрабатывать несколько сообщений в виде пакета?

Мы переходим к использованию NServiceBus, и изменения моделируются как отдельные команды, отправленные в конечную точку.

Мы не хотим отправлять эти изменения в виде отдельных файлов; вместо этого мы хотим, чтобы пакет получал несколько команд, объединяя эту информацию в один файл.

Как можно объединить несколько команд в один файл экспорта?

+0

Почему вы хотите, чтобы пакет получил несколько команд? Составляют ли они единую атомную единицу, и все они должны быть либо совершены, либо свернуты вместе? –

+0

Используете ли вы команды для передачи файла по проводу? Итак, файл -> команды -> файл? –

+0

В значительной степени; но мы будем отображать команды в XML-формат, определенный нашим клиентом. –

ответ

1

Вы посмотрели на Саги? Sagas позволяет моделировать длительные бизнес-процессы. Поэтому, если файл имеет несколько частей, сага может начинаться, когда она получает первую часть, и заканчивается, когда у нее есть все необходимые ей части.

http://cdn.nservicebus.com/sagas.aspx

+0

Я попытался решить это, используя сагу. Если я отправляю сообщения по одному, то он работает. Но при загрузке у него есть проблемы параллелизма, которые я не могу решить. Вот суть: https://gist.github.com/anonymous/8664762 –

+0

Должен ли ваш идентификатор партии быть жестко закодированным, чтобы использовать тот же Guid/Id всегда, или я не понимаю этот бит? –

+0

Я не знаю, что еще использовать, поскольку нет никакого естественного идентификатора, который группирует команды как партии; и не существует другой команды, которая используется для запуска процесса. Вместо этого мы просто хотим обрабатывать команды в партии, например, 100 за раз. В идеале у нас будет только одна сага, открытая в любой момент. –

0

Вы можете посылать команды при помощи Bus.Send (Шеззаде [] сообщений). Обратите внимание, что он принимает массив, и сообщения будут упаковываться в одно сообщение очереди по проводу. На принимающей стороне обработчик будет вызываться один раз за сообщение. В вашем обработчике вы сможете просто добавлять приложение к своему файлу. В обработчике вы можете поместить логику, чтобы определить, когда нужно «перекатывать» файл, если это необходимо.

+0

Обратите внимание, что эта функция дозирования устарела и будет удалена в будущих версиях NSB. –

+0

Также у нас нет возможности загружать сообщения во время отправки. Вместо этого мы хотим только получать пакет. –

+0

Какова причина его удаления? –

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