任何人都可以猜出问题是什么,因为我不知道如何解决这个问题。大众运输产生_skipped队列,我不知道为什么它会生成这些队列。它是在执行发布请求响应时生成的。
请求客户端是使用 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));
正如您所看到的,这是请求响应场景,其中请求被发送给所有消费者。但因为目前我们只有一个消费者,所以它只会被发送给该消费者。如果对多个消费者进行发布请求响应,则很容易出现死信,一旦一个消费者响应,另一个消费者不知道在哪里响应,就会生成死信。但因为我们这里有一个消费者,所以我们可以消除这种可能性。
那么造成这些跳过队列的其他原因可能是什么?非常感谢您对我如何解决此问题的任何帮助...
不得不说,在Consume方法中,在某种情况下,我们提出了一个RequestTimeoutException
并在请求的应用程序中捕获它。这是经过测试的,不会生成跳过的队列。