【发布时间】:2020-02-15 18:00:59
【问题描述】:
我有以下情况,我无法直接响应 MassTransit RequestClient 的请求
- 请求服务 1 实现
RequestClient并调用GetResponse - 另一个服务 2 的请求消费者只是将请求信息 (
messageId, requestId...) 保存到某个存储空间而不发回响应。 - 根据服务2中的API调用,我们可以找到保存的请求信息并将响应发送回RequestClient。我可以通过将响应发送到
RequestClient总线的临时队列来实现这一点,但消息最终会出现在临时队列的跳过队列中,GetResponse永远不会收到消息。
如何让消息到达主临时队列,并让GetResponse 消费者找到它。
【问题讨论】:
-
您是否保存了原始请求中的
ResponseAddress,并使用它来发送响应,包括 RequestId 标头?源代码中有一个复杂的example,但您需要在 SendContext 上设置属性,以便将消息关联回请求客户端。 -
是的,我已经保存了 ResponseAddress 并使用它来发送响应,我在发送中包含了相同的 RequestId。我将尝试填充上下文的其余属性。感谢您指出正确的代码查看位置。
-
是否可以选择使用现有的 RequestStateMachine 我从消费者发布 RequestStarted 并从 API 控制器发布 RequestCompleted。
-
未来?我不知道。老实说,我不记得我在该状态机中添加了什么,可能与 Conductor 有关。
标签: masstransit