有人能猜出问题是什么吗?因为我对如何解决这个问题一无所知。rabbitmq生成
_跳过
排队,我不知道为什么会产生这些。它是在执行发布请求响应时生成的。
在MassTransit.RequestClientExtensions中使用以下方法创建请求客户端
public static IRequestClient<TRequest, TResponse> CreatePublishRequestClient<TRequest, TResponse>(this IBus bus, TimeSpan timeout, TimeSpan? ttl = null, Action<SendContext<TRequest>> callback = null) where TRequest : class where TResponse : class
{
return (IRequestClient<TRequest, TResponse>) new PublishRequestClient<TRequest, TResponse>(bus, timeout, ttl, callback);
}
请求如下:
TResponse response = TaskUtil.Await(() => requestClient.Request(request));
正如您所看到的,这是一个请求响应场景,其中请求被发送到所有消费者。但因为目前我们只有一个消费者,它只被发送给那个消费者。如果对多个使用者执行PublishRequestResponse,则死信很容易出现,一旦一个使用者作出响应,另一个使用者就不知道应该在哪里响应,并生成死信。但是因为我们这里只有一个消费者,我们可以消除这种可能性。
那么,这些跳过的队列还有什么其他原因呢?非常感谢您帮助我解决这个问题…
我不得不说,在消费方法中,在某些情况下,我们提出了
RequestTimeoutException
并在请求的应用程序中捕获它。这是经过测试的,不会生成跳过的队列。