Реализация «тайм-аута саги» с использованием службы WCF, размещенной на IIS - PullRequest
2 голосов
/ 28 июля 2011

У меня довольно простой шаблон сбора рассеяния , реализованный с использованием веб-службы IIS (WCF) в качестве обработчика запросов (широковещания) и агрегатора.

Все работает довольно гладко, используя стандартные NetMsmqBinding, односторонние контракты на сообщения и WAS. Но теперь мы хотим ввести бизнес-правило, согласно которому агрегатор будет ожидать окончательного ответа только определенное время (возможно, несколько дней); если некоторые или все они не получены, он должен закрыть пакет и опубликовать любую имеющуюся информацию. Обычно он инициирует публикацию только тогда, когда сообщают все конечные точки.

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

NServiceBus относится к сагам как к первоклассному гражданину, изящно обрабатывая таймауты, и я знаю, что BizTalk фактически реализует весь скаттертинг как единую оркестровку. Но я не хочу развертывать какие-либо новые инструменты или сервисы только для этого одного требования.

Есть ли способ реализовать длительное действие тайм-аута пакета, используя только WCF и MSMQ?

(Опять же - агрегатор размещен в IIS, поэтому я не могу просто установить таймер; пул приложений может быть переработан или отключен в любое время.)

1 Ответ

0 голосов
/ 28 июля 2011

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

На мой взгляд, это звучит как огромная работа и это именно то, что NServiceBus предоставляет из коробки (и многое другое).Я бы еще раз взглянул на это.Бизнес постоянно меняется, и саги стали более распространенными, чем мы понимаем.Сейчас это может быть одно требование, но вскоре оно может измениться.

...