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

问题描述 投票:0回答:1

在过程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

masstransit
1个回答
0
投票
因此,事实证明,这是一个错误。请求TimeToLive被应用于请求使用者产生的每个消息,这就是为什么它最终从队列中消失的原因。
© www.soinside.com 2019 - 2024. All rights reserved.