消费者关闭时的MassTransit请求/响应

时间:2017-04-30 00:40:57

标签: masstransit

我使用的是MassTransit 3.4 / RabbitMQ 3.6.5而我喜欢它,但遇到了一个问题。我有2个服务,A和B.当服务A启动时,它会立即通过请求/响应模式调用服务B.如果B当时没有运行,则消息将超时,这是正常的 - 服务A仍然设置为正在运行。之后,当服务B上线时,如果服务A发出相同的请求/响应呼叫,我预计它会起作用,但事实并非如此。发出请求,服务B选择它并使用正确的消息进行RespondAsync,但响应最终在服务A的总线Skipped队列中。为什么?这种情况不受支持吗?我怎样才能确保我能以任何顺序启动我的服务并确保他们能够正常工作?

如果我首先启动服务B然后启动服务A,它工作正常,但我不想依赖这种hacky启动序列。

每次我做请求/响应时,我都会像在文档中那样得到IRequestClient ...

IRequestClient<TRequest, TResponse> client = this.busControl.CreateRequestClient<TRequest, TResponse>(uri, TimeSpan.FromSeconds(timeout));
return await client.Request(message);

谢谢, 安迪

0 个答案:

没有答案