EasyNetQ(RabbitMQ)在处理消息时,如果抛出异常,继续不断发送到订阅队列,不断处理(也就是不自动确认消息已到达)

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

默认情况下,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
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值