Springboot + rabbitMQ实现延迟队列(消费者)

本文介绍了如何在Springboot应用中结合rabbitMQ创建延迟队列,并利用策略模式处理不同类型的消费逻辑。内容包括消息消费者的注解监听、策略接口定义、具体策略实现类、Spring容器上下文工具类的使用,以及测试Controller的实现。通过这种方式,避免了消费者监听类中的大量if else语句,实现了延迟消费和业务逻辑的分离。
摘要由CSDN通过智能技术生成

由于太长了,所以分成两篇写,接上一篇讲解了消息的定义和发送,这里继续讲解消费者

由于可能每条消息所处理的逻辑可能不一样,例如:常规订单30分钟不支付则取消订单,团购订单一天拼团不成功则取消等等,为了避免在消费者监听类中使用大量if else,这里使用策略模式来处理(由于spring的bean的初始化的时候创建,如果用Java常规的反射获取类,则在具体策略类用注入别的bean的时候,会拿不到值,所以需要通过applicationContext获取类)

1.消息消费者类-MessageConsumer -- 使用注解的方式监听,这里包括消费确认

@Component
@RabbitListener(queues = QueueContent.MESSAGE_QUEUE_NAME)
public class MessageConsumer {

    static Logger logger = LoggerFactory.getLogger(MessageConsumer.class);

    @RabbitHandler
    public void handler(String msg,Channel channel, Message message) throws IOException {
        if (!StringUtils.isEmpty(msg)) {
            MessagePojo messagePojo = JSONUtil.toBean(msg,MessagePojo.class);
           Action action = Action.RETRY;
            try {
                //这里使用策略模式和springboot的结合使用,
              
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值