【设计】springboot rabbitmq重试达到失败次数 进入死信队列
代码示例:
@Slf4j @Service @RabbitListener(queues = {"${spring.events.[event.product.product_price_changed].queue}"}, concurrency = "1", containerFactory = "rabbitListenerContainerFactory") public class ProductPriceChangeEventHandlerBak { @Async @RabbitHandler @Retryable(include = Exception.class, maxAttempts = 3, backoff = @Backoff(delay = 5000, multiplier = 2, maxDelay = 60000)) public void onProductPriceChange(ProductPriceChangeEvent event, Channel channel, Message message) throws Exception { log.info("handle event start: {}", event); long deliveryTag = message.getMessageProperties().getDeliveryTag(); TimeUnit.SECONDS.sleep(5); if (event.getPriceNew().equals(new BigDecimal("808.88"))) { throw new CommonException(ErrorCode.INTERNAL_ERROR); } channel.basicAck(deliveryTag, false); log.info("handle event complete: success"); } @Recover public void onProductPriceChange(Exception ex, ProductPriceChangeEvent event, Channel channel, Message message) throws Exception { long deliveryTag = message.getMessageProperties().getDeliveryTag(); channel.basicNack(deliveryTag, false, false); log.error("handle event complete: exception"); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
2020-06-20 数据仓库、数据湖、流批一体,终于有大神讲清楚了!
2016-06-20 【消息队列】转-大型网站架构之分布式消息队列