默认情况下,EasyNetQ的消息处理过程中,如果throw exception,那么,依然是认为消息已经送达,不会再次推送,为了让RabbitMQ再次推送,可以这么实现:
public sealed class AlwaysRequeueErrorStrategy : IConsumerErrorStrategy
{
public void Dispose()
{
}
public AckStrategy HandleConsumerError(ConsumerExecutionContext context, Exception exception)
{
return AckStrategies.NackWithRequeue;
}
public AckStrategy HandleConsumerCancelled(ConsumerExecutionContext context)
{
return AckStrategies.NackWithRequeue;
}
}
[TestMethod

文章介绍了如何在EasyNetQ中使用自定义的AlwaysRequeueErrorStrategy处理消息处理过程中的异常,确保即使出现异常,RabbitMQ也能重新推送消息。测试方法展示了如何注册并应用这个策略,以及其与传统RabbitMQ库手动ack机制的区别。
最低0.47元/天 解锁文章
338





