Может кто-нибудь догадаться, в чем может быть проблема, потому что я не знаю, как решить эту проблему. RabbitMQ генерирует _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
и перехватываем его в запрашивающем приложении. Это проверено и не создает пропущенных очередей.