NServiceBus подходит для распределения нагрузки периодических задач - PullRequest
1 голос
/ 17 ноября 2010

Подойдет ли NServiceBus или эквивалентный ESB для приложения, в котором есть множество различных типов задач фонового обслуживания? Например:

  • Сканирование баз данных на наличие определенных слов в пользовательском контенте
  • Обновление таблиц базы данных, в которых хранятся результаты относительно дорогих запросов
  • Создание / ведение внешних индексов для контента
  • Отправка уведомлений о событиях по расписанию для запланированного события.

Моя идея состоит в том, чтобы использовать какой-то планировщик задач (встроенный в Windows, Quartz.NET или мое собственное решение на основе базы данных) для периодической публикации сообщений различного типа на шине. Период может составлять от одной минуты до нескольких дней. Причина, по которой я хочу использовать шину, заключается в том, что я могу масштабировать количество подписчиков, поскольку система становится больше и загруженнее, а задачи становятся либо более частыми, либо более ресурсоемкими. Это также обеспечит избыточность, если у меня всегда работает как минимум два подписчика.

Очевидной альтернативой этому было бы написание моей собственной службы Windows, которая запускается планировщиком и выполняет работу, но я чувствую, что сделать такое масштабирование за пределами одной машины и обеспечить отказоустойчивость может быть сложнее, чем использовать ESB как та сантехника.

Это звучит как разумный подход? Альтернативные предложения?

ТИА

1 Ответ

2 голосов
/ 17 ноября 2010

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

С точки зрения описанного вами набора функций NServiceBus предоставляет средства для всего этого.

...