Имам база данни, която има редица опашки, които ще съдържат съобщения от продукт на трета страна. Бих искал да импортирам тези съобщения в моята шина за обработка и вярвам, че мога да постигна това с NServiceBus, но бих искал да хоствам цялото импортиране на съобщения в една услуга на Windows, която ще има конфигурация в опашката на базата данни за наблюдение.
Стъпките на обработка са както следва:
1) Импортиране в автобус 2) трансформиране в съобщение 3) Изпращане на съобщение за автобус
Всяка NServiceBus ще бъде конфигурирана да проверява периодично опашката на базата данни. Когато пристигне съобщение, то ще изпълни Bus.SendLocal, за да изпълни стъпка 1.
След това хостът на NSB ще получи процес с манипулатор на съобщения. В рамките на този манипулатор на съобщения ще се случи трансформацията на съобщението. Накрая ще бъде изпратено действителното съобщение за автобус. Обичайната конфигурация ще се справи с целевия хост.
Бих искал да разбера дали множество NSB хостове могат да бъдат поставени в една услуга на Windows и дали има някакви проблеми, свързани с това? Вярвам, че всички хостове ще трябва да споделят една и съща конфигурация (доволен съм от това ограничение), правилно ли е?
Ако множество хостове е „не-не“, моята алтернатива е да имам Window Service с препратка към шина (singleton). TPL задача ще наблюдава опашката на базата данни и след това ще използва шината за импортиране на съобщението на базата данни. Отделна NServiceBus ще обработва импортираните съобщения от базата данни и ще извършва трансформацията и изпращането до други хостове.
Съжалявам за дължината на въпроса.