Множество NServiceBus хостове в услуга с един прозорец

Имам база данни, която има редица опашки, които ще съдържат съобщения от продукт на трета страна. Бих искал да импортирам тези съобщения в моята шина за обработка и вярвам, че мога да постигна това с NServiceBus, но бих искал да хоствам цялото импортиране на съобщения в една услуга на Windows, която ще има конфигурация в опашката на базата данни за наблюдение.

Стъпките на обработка са както следва:

1) Импортиране в автобус 2) трансформиране в съобщение 3) Изпращане на съобщение за автобус

Всяка NServiceBus ще бъде конфигурирана да проверява периодично опашката на базата данни. Когато пристигне съобщение, то ще изпълни Bus.SendLocal, за да изпълни стъпка 1.

След това хостът на NSB ще получи процес с манипулатор на съобщения. В рамките на този манипулатор на съобщения ще се случи трансформацията на съобщението. Накрая ще бъде изпратено действителното съобщение за автобус. Обичайната конфигурация ще се справи с целевия хост.

Бих искал да разбера дали множество NSB хостове могат да бъдат поставени в една услуга на Windows и дали има някакви проблеми, свързани с това? Вярвам, че всички хостове ще трябва да споделят една и съща конфигурация (доволен съм от това ограничение), правилно ли е?

Ако множество хостове е „не-не“, моята алтернатива е да имам Window Service с препратка към шина (singleton). TPL задача ще наблюдава опашката на базата данни и след това ще използва шината за импортиране на съобщението на базата данни. Отделна NServiceBus ще обработва импортираните съобщения от базата данни и ще извършва трансформацията и изпращането до други хостове.

Съжалявам за дължината на въпроса.


person user634266    schedule 08.09.2014    source източник


Отговори (2)


Трябва да можете да използвате сателит, за да изпълнявате тези видове DB заявки и след това да ги препращате към автобуса.

person Udi Dahan    schedule 09.09.2014

Какво имаш предвид под "домакини"? Искате да кажете, че може ли една крайна точка да обработва много различни типове съобщения?

Можете да обработвате колкото искате различни видове съобщения в един хост. Единственото ограничение е, че те ще споделят една и съща опашка, което означава, че всички типове съобщения ще получат еднакъв приоритет (което е проблем само в много специфични случаи).

person Phil Sandler    schedule 08.09.2014
comment
Здравейте, съжалявам за объркването. Хостът ще има следната възможност: 1) Наблюдава опашка от база данни, 2) Препратка към шината за публикуване на съобщения, 3) Способността да има клас манипулатор на съобщения за обработка на съобщенията преди изпращане към шината. Всяка нишка ще съдържа екземпляр на NServiceBus хост - person user634266; 08.09.2014
comment
Наясно съм, че мога да имам толкова манипулатори на съобщения в 1 хост, като добавя IHandleMessages. Този въпрос е дали в един процес на Windows мога (или трябва) да хоствам множество NServiceBus хостове, всеки в отделна нишка, или мога (или трябва) да поставя всеки в рамките на неговата собствена услуга? - person user634266; 09.09.2014
comment
Все още не съм наясно защо имате нужда от отделни хостове (и може би това е вашият въпрос). Мисля, че просто искате множество фонови нишки, които наблюдават базата данни и след това изпращат команди (или публикуват събития) към шината. - person Phil Sandler; 09.09.2014