【发布时间】:2021-09-22 18:16:03
【问题描述】:
我已经配置了一个消费者来接收一批消息。消费者也已配置为在发生任何错误时重试和重新交付。批处理消费者工作正常。但是我注意到,如果批处理消息中发生任何错误,整个批处理都会出错。
如下例所示,假设 Message[2] 出现故障,那么看起来整个批次在出现故障之前正在重试/重新交付。
我的问题:我们有什么方法可以配置消费者,以便只有批处理中的错误消息尝试重新传递或出现错误,并且批处理中的其他消息将恢复。 p>
public class MyConsumer : IConsumer<Batch<MyClass>>, IConsumer<Fault<MyClass>>
{
public async Task Consume(ConsumeContext<Batch<MyClass>> context)
{
for (int i = 0; i < context.Message.Length; i++)
{
if (i == 2)
{
throw new Exception();
}
}
}
public async Task Consume(ConsumeContext<Fault<MyClass>> context)
{
Console.WriteLine($"Error in Context. Name :{context.Message.Message.Name}");
}
}
【问题讨论】:
标签: masstransit