2015-12-01 6 views
0

Я хочу заменить систему обмена сообщениями на Rebus, но мне нужно выполнить некоторые сообщения синхронно.Есть ли все равно, чтобы выполнять сообщения синхронно?

Мой контроллер webapi должен дождаться завершения всех обработчиков.

"Клиент -> Controller -> Bus (Прд1 Начало -> Handler1 - Handler2 -> Прд1 Complete) -> Http.OK"

Есть ли у вас какие-либо идеи, как я могу это реализовать?

Спасибо,

ответ

0

Там нет никакого способа, на данный момент, но ничто не мешает вам иметь обработчик в фоновом режиме, который помещает полученные ответы в статический ConcurrentDictionary<string, Reply>, который вы можете периодически опрашивать для ответа, который соответствует, например, идентификатор корреляции отправленного сообщения.

Вы можете либо обернуть ожидание в await умелого метода, который возвращает Task, или вы можете захотеть взглянуть на ManualResetEvent, если вы хотите, чтобы блокировать поток, пока не были получены ответы.

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

Это, как правило, не лучший способ сопоставить ответы, так что мне любопытно узнать, чего вы пытаетесь достичь?

+0

Мне не нужен ответ на обработанные сообщения. Фактически, я буду внедрять Rebus для публикации сообщений подписчикам, тем временем я хочу заменить мой distpacher (командный синхронный диспетчер) с помощью Rebus. Это оно. – oguzh4n