使用MassTransit将消息发送到临时队列

时间:2020-01-08 19:49:37

标签: masstransit

在以下情况下,我无法直接响应MassTransit RequestClient的请求

  • 请求服务1实现RequestClient并调用GetResponse
  • 另一个服务2拥有请求的使用方,该请求的使用方仅将请求信息(messageId, requestId ...)保存到某个存储中,而不发送回响应。
  • 基于服务2中的API调用,我们可以找到保存的请求信息,并将响应发送回RequestClient。我可以通过将响应发送到RequestClient总线的临时队列来实现此目的,但是该消息最终出现在临时队列的跳过队列中,并且GetResponse从未收到该消息。

我如何使消息到达主临时队列,并使GetResponse使用者找到它。

1 个答案:

答案 0 :(得分:0)

如果有人有类似情况。我们通过在使用者中实现事件等待器机制来实现此目的。当在服务2中进行外部API调用时,会触发内部事件,然后通过ResetEvent等待它的使用者继续收集响应并将其通过开箱即用的RespondAsync发送回去。