У меня довольно простой шаблон сбора рассеяния , реализованный с использованием веб-службы IIS (WCF) в качестве обработчика запросов (широковещания) и агрегатора.
Все работает довольно гладко, используя стандартные NetMsmqBinding
, односторонние контракты на сообщения и WAS. Но теперь мы хотим ввести бизнес-правило, согласно которому агрегатор будет ожидать окончательного ответа только определенное время (возможно, несколько дней); если некоторые или все они не получены, он должен закрыть пакет и опубликовать любую имеющуюся информацию. Обычно он инициирует публикацию только тогда, когда сообщают все конечные точки.
Я знаю, что могу установить срок действия сообщений в широковещательных сообщениях, чтобы конечные точки не тратили время на ненужную работу, но как насчет запуска ранней публикации?
NServiceBus относится к сагам как к первоклассному гражданину, изящно обрабатывая таймауты, и я знаю, что BizTalk фактически реализует весь скаттертинг как единую оркестровку. Но я не хочу развертывать какие-либо новые инструменты или сервисы только для этого одного требования.
Есть ли способ реализовать длительное действие тайм-аута пакета, используя только WCF и MSMQ?
(Опять же - агрегатор размещен в IIS, поэтому я не могу просто установить таймер; пул приложений может быть переработан или отключен в любое время.)