#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;
}