MassTransit3如何向消费者发出请求

时间:2015-12-23 14:48:20

标签: masstransit

我想从layout-sw360dp & layout-sw480dp方法发出req / res请求,但我在IConsumer.Consume()上看不到任何返回ConsumeContext<>引用的方法。我是否需要在某处保留对IRequestClient<,>的引用并使用它,或者我可以以某种方式使用上下文?

1 个答案:

答案 0 :(得分:1)

在这种情况下,最好在使用者之外创建请求客户端,并将其作为依赖关系作为IRequestClient<,>接口传递给使用者。请求客户端使用IBus创建,该客户端位于使用者上下文之外。

它还确保请求不太可能与代理死锁,因为响应是在总线端点上接收的,而不是消费者的接收端点(如果您的并发限制为1,则永远不会完成)。

也不可能将消费者连接到已启动的接收端点,这是请求/响应处理的要求(它发生在封面下)。但是,总线可以连接消费者以获取发送的消息(响应发送到总线地址,而不是发布),这就是它用于响应请求的原因。

为了使邮件跟踪保持连续,最好将出站请求中的InitiatorId设置为使用者邮件的CorrelationId,以及复制ConversationId。这有助于跟踪和跟踪整个消息命令/事件流。

相关问题