У меня есть база данных, в которой есть несколько очередей, которые будут содержать сообщения от стороннего продукта. Я хотел бы импортировать эти сообщения в свою шину для обработки и считаю, что могу добиться этого с помощью NServiceBus, но я хотел бы разместить весь импорт сообщений в одной службе Windows, которая будет иметь конфигурацию в очереди базы данных для мониторинга.
Этапы обработки следующие:
1) Импортировать в шину 2) преобразовать в сообщение 3) Отправить сообщение в шину
Каждый NServiceBus будет настроен на периодический опрос очереди базы данных. Когда приходит сообщение, оно выполняет Bus.SendLocal для выполнения шага 1.
Затем хост NSB получит процесс с обработчиком сообщений. В этом обработчике сообщений будет происходить преобразование сообщения. Наконец, фактически сообщение Bus будет отправлено. Обычная конфигурация будет иметь дело с целевым хостом.
Я хотел бы понять, можно ли разместить несколько хостов NSB в одной службе Windows и есть ли какие-либо проблемы, связанные с этим? Я считаю, что все хосты должны иметь одну и ту же конфигурацию (я доволен этим ограничением), это правильно?
Если несколько хостов - это "нет-нет", моя альтернатива - иметь службу Window со ссылкой на шину (singleton). Задача TPL будет отслеживать очередь базы данных, а затем использовать шину для импорта сообщения базы данных. Отдельный NServiceBus будет обрабатывать импортированные сообщения базы данных и выполнять преобразование и отправку на другие хосты.
Извините за длину вопроса.