Отложенные очереди внутри определения потребителя

#masstransit

#masstransit

Вопрос:

У меня есть определение потребителя:

 public class RequestSentConsumerDefinition : ConsumerDefinition<RequestSentConsumer>
{
    protected override void ConfigureConsumer(
        IReceiveEndpointConfigurator endpoint,
        IConsumerConfigurator<RequestSentConsumer> consumer)
    {
        var rabbitmq = endpoint as RabbitMqReceiveEndpointConfiguration;
        rabbitmq.Lazy = true;

        consumer.UseMessageRetry(retry => retry
            .Incremental(3, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(1)));
    }
}
  

Есть ли более элегантный способ установить лень очереди?
Может быть, у MT есть что-то вроде RabbitMQConsumerDefinition или ConsumerDefinition<RequestSentConsumer, RabbitMqReceiveEndpointConfiguration> в любом внешнем пакете?

Ответ №1:

Для конфигурации, зависящей от транспорта, в определении потребителя необходимо сопоставить шаблон с конфигуратором конечной точки приема и при необходимости применить конфигурацию, зависящую от транспорта.

 protected override void ConfigureConsumer(
    IReceiveEndpointConfigurator endpointConfigurator,
    IConsumerConfigurator<RequestSentConsumer> consumerConfigurator)
{
    if(endpointConfigurator is IRabbitMqReceiveEndpointConfigurator rmq)
        rmq.Lazy = true;
}