Мы решили включить приоритетную очередь в одной из наших очередей. Реализация этого проста, а изменение кода невелико, поэтому мы очень довольны этой функцией.
Проблема, с которой я столкнулся, связана с модульным тестом для потребителя. Мы используем Mass Transits InMemoryTestHarness. Когда он срабатывает, метод SetPriority создает исключение System.ArgumentException «RabbitMqSendContext не был доступен».
await context.Publish(message, c => {
c.RequestId = requestId;
c.SetPriority(priority); //throws exception here
});
У нас возникла та же проблема, когда мы начали использовать прямой обмен для другой очереди, но мы можем переместите конфигурацию этого в код в конфигурацию шины, используя метод UseRoutingKeyFormatter в RoutingKeyConventionExtensions.
Есть ли что-то похожее для приоритетной очереди? Или есть способ, которым я могу сохранить этот код и все еще использовать InMemeroryTestHarness?