Невозможно настроить задержку повторной доставки.C#

Место общения программистов C#
Ответить
Anonymous
 Невозможно настроить задержку повторной доставки.

Сообщение Anonymous »

В моем приложении, использующем MassTransit и RabbitMq, у меня есть следующая конфигурация:
builder.Services.AddMassTransit(configurator =>
{
configurator.AddConsumers(assemblies: Assembly.GetEntryAssembly());

configurator.UsingRabbitMq((context, cfg) =>
{

cfg.ReceiveEndpoint("my-queue3", e =>
{
e.ConfigureConsumer(context);
});

cfg.UseMessageRetry(retryCfg =>
{
retryCfg.Immediate(2);
});

cfg.UseDelayedRedelivery(delayRedeliveryCfg =>
{
delayRedeliveryCfg.Intervals(TimeSpan.FromSeconds(30));
});

cfg.ConfigureEndpoints(context);
});
});

И потребитель:
public class MyMessageConsumerConsumer : IConsumer
{
private readonly ILogger _logger;

public MyMessageConsumerConsumer(ILogger logger) => _logger = logger;

public Task Consume(ConsumeContext context)
{
_logger.LogInformation("Consumed by MyMessageConsumerConsumer!");

throw new NotImplementedException();
}
}

И я отправляю такое сообщение:
var msg = new MyMessage() { MyProperty = "Test" };

await _publishEndpoint.Publish(msg);

Я ожидал, что повторная доставка произойдет через 30 секунд, но после первых трех попыток потребитель вызывается снова немедленно!
Что не так?
Я также пытался перенести повторную попытку и повторную доставку в конфигурацию конечной точки, но это не решило проблему:
cfg.ReceiveEndpoint("my-queue3", endPointCfg =>
{
endPointCfg.UseMessageRetry(retryCfg =>
{
retryCfg.Immediate(2);
});

endPointCfg.UseDelayedRedelivery(delayRedeliveryCfg =>
{
delayRedeliveryCfg.Intervals(TimeSpan.FromSeconds(30));
});

endPointCfg.ConfigureConsumer(context);
});


Подробнее здесь: https://stackoverflow.com/questions/791 ... redelivery
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»