31 | 消息驱动:如何通过 RabbitMQ 插件实现延迟消息?
安装插件
- 深入了解
- 翻译
- 解释
- 总结
RabbitMQ插件实现延迟消息,通过延迟消息插件实现了优惠券的延迟发放。文章首先介绍了安装插件的步骤,然后详细讲解了如何创建生产者和消费者来对接延迟消息队列。在实现延迟领券的过程中,通过MessageBuilder构建消息对象,设置了特殊的header x-delay,代表消息在队列中延迟处理的时间。接着,对消费者和配置文件做了相应的声明和修改。最后,总结了利用RabbitMQ搭建延迟消息的过程,并分享了在使用RabbitMQ实现高并发业务场景时的经验和思考。同时,提出了思考题,鼓励读者深入了解RabbitMQ提供的各种强大插件功能。整体而言,本文通过实际案例详细介绍了如何利用RabbitMQ插件实现延迟消息,对读者了解RabbitMQ延迟消息功能具有指导意义。
《Spring Cloud 微服务项目实战》,新⼈⾸单¥59
全部留言(4)
- 最新
- 精选
- 招谁惹谁延时消息能取消吗?如果不能取消,业务上还要对超时的已付款的订单再兼容呀。这个是不是定时任务更好一些!
作者回复: 定时任务可以,不过时效性不如延迟消息好。每时没秒都有业务要处理,那定时任务要跑的像脱缰野狗一样频繁才行
2022-03-0323 - 奔跑的蚂蚁在电商中 会遇到 下单 -》支付 -》退款 消息的发送点不一样 ,消费点也不一样 怎么保证这个消费成功的顺序呢
作者回复: 如果可达性不能保证,就用外部事务表控制幂等性。而且下单 -> 支付 -> 退款之间是串行,下单失败是不会生成支付连接的,如果资金链路auth阶段失败就在payment gateway这一层(比如网联)原路返回,不会生成成功交易记录;如果交易capture成功,通常上游支付链路就直接触发callback url了,这时你再背后在发送支付成功的event,在本地消费成功event或补偿job查询到交易底层状态前,不会触发退款。
2022-03-021 - inrtyx除了mq还有其他方式推荐吗?
作者回复: 如果已经有了六脉神剑剑谱,为何还用学一阳指呢?
2022-02-28 - 小飞同学上家公司就遇到过实现任意延时时长消息问题,rabbitmq_delayed_message_exchange这个插件官方说的是有可能适合于生产使用(是性能还是稳定性的考虑、还是出于商业考虑)。为什么官方rabbitmq不推出新特性做支持,而要采用插件? 目前已知rocketmq只支持队列级别消息,好像也没有进一步去开发任意延时市场消息的趋势,也是为了商业化么?
作者回复: 很多公司的开源版和商用版功能有一些差别,比如这里提到的rocketmq(阿里前身的metaq),阿里系的惯用手法哈,你看它的sentinel也是的,开源版有些功能甚至要自己修改底层代码,但是商用版做到alicloud里的就相对完善
2022-02-28