NServiceBus подходит для распределения нагрузки периодических задач

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

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

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

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

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

ТИА


person jlew    schedule 16.11.2010    source источник


Ответы (1)


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

Что касается набора функций, который вы описали, NServiceBus предоставляет все это.

person Udi Dahan    schedule 17.11.2010