2015-01-22 2 views
0

Я использую NServiceBus для обработки некоторых асинхронных задач. Иногда у меня есть задача, когда мне нужно обработать 10 000 записей, так что это занимает несколько часов.Как обрабатывать очень длинные процессы в NServiceBus

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

Кроме того - если я разделил эти записи на 10 000 сообщений меньшего размера, они закроют MSMQ в течение нескольких часов, а пользователи, ожидающие выполнения функций в течение нескольких минут, будут ждать.

Есть ли способ в NServiceBus определить приоритеты для разных сообщений?

+0

Как правило, следует избегать приоритета сообщения. Скорее используйте приоритетные/фоновые очереди. Такой же код, но разные конечные точки. –

ответ

3

Я бы решил разбить его на небольшие партии (не обязательно одно сообщение на запись) и иметь отдельную службу конечных точек специально для этого процесса, чтобы другие вещи не задерживались. Если вы разбиваете его на партии, и вы заботитесь о том, когда все закончится, я бы рекомендовал использовать сагу для отслеживания этого состояния.

+1

Это может быть полезно прочитать: http://lostechies.com/jimmybogard/2014/02/27/reducing-nservicebus-saga-load/ –

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