无论如何同步执行消息?

Is there anyway to execute messages synchronously?

我想用 Rebus 替换我的消息系统,但我需要同步执行一些消息。

我的 webapi 控制器需要等到所有处理程序完成。

"Client -> Controller -> Bus (Tx1 Begin -> Handler1 - Handler2 -> Tx1 Complete) -> Http.OK"

你知道我该如何实现吗?

谢谢,

目前没有办法,但没有什么能阻止您在后台使用处理程序将收到的回复放入静态 ConcurrentDictionary<string, Reply>,然后您可以定期轮询对应于例如您发送的消息的相关 ID。

您可以将等待包装在 returns 一个 Taskawait 可用方法中,或者如果需要,您可能想看看 ManualResetEvent阻塞线程直到收到回复。

您当然必须使用两个词典来执行此操作,或者构建另一个能够等待多个回复的机制。

虽然这通常不是关联回复的最佳方式,所以我很想知道您想要达到什么目的?