Masstransit发布的消息从队列中消失

时间:2020-05-11 04:59:00

标签: masstransit

在过程A中,我正在使用 Bus.CreateRequestClient<TRequest> 创建客户端然后使用 client.GetResponse<TResponse1, TResponse12>(request) 从流程B获得响应。

在流程B中,我使用consumeContext.RespondAsync(@event)响应请求,并使用consumeContext.Publish(@event)发布事件

我有一个进程C订阅了已发布的事件。

因此,我已启动并运行进程A,B和C,然后停止进程C。 我在进程A中发送了请求,进程C的队列收到了一条消息,但是几秒钟后,该消息从队列中消失了。

我已经检查了队列的配置,配置为耐用= true和autodelete = false。

如果我不停地开火,而忘记了(将消息发送到端点)而不是在A中进行请求/响应,而只在B中发布了事件,则消息将保留在C的队列中。

这是设计使然吗? 另外我还注意到,如果我通过丢火而在队列中收到一条消息,则所有消息都将留在队列中,无论它是使用请求/响应创建的。

请参见下面的屏幕截图,在突出显示的时间段内,消息被从队列中取出,而没有得到用户的确认。 Messages taken off queue without consumer ack

1 个答案:

答案 0 :(得分:1)

因此,事实证明,这是一个错误。请求TimeToLive被应用于请求使用者产生的每条消息,这就是为什么它最终从队列中消失的原因。

Fixed

大概在今晚以6.3.1发行。