Springboot整合ActiveMQ实现消息队列

确保你启动了自己电脑的activemq。

pom中导入坐标

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-activemq</artifactId>
        </dependency>

书写yml配置

spring:
  activemq:
    broker-url: tcp://localhost:61616
  jms:
    template:
      default-destination: my    #消息队列的默认名字
    pub-sub-domain: false   #是否开启消息订阅模式

业务层代码

@Service
public class MessageServiceActive implements MessageService {
    @Autowired
    private JmsMessagingTemplate template;
    @Override
    public void getMessage(String id) {
        template.convertAndSend("AA",id);        //自定义消息队列名字
        System.out.println("待发送短信的订单已纳入处理队列,id:"+id);
    }

    @Override
    public String doMessage() {
        String id=template.receiveAndConvert("AA",String.class);
        return id;
    }

此时,你书写控制层代码就可以实现消息队列了,不过有一个缺陷,那就是处理消息的时候必须手动书写网址,调用执行对应的方法才可以,不过我们可以通过监听器来实现自动化,就是一旦有消息产生就会立即处理。

监听器代码

@Component
public class MessageListener {
    @Autowired
    private JmsMessagingTemplate template;
    @JmsListener(destination = "AA")    //要监听的消息队列名称
    @SendTo(value = "BB")        //自动化处理完,还可以把该消息传递给下一了消息队列        
    public String receive(){
        String id=template.receiveAndConvert("AA",String.class);
        System.out.println("已完成短信发送业务,id:"+id+"\n");
        return "new_"+id;       //利用返回值转发给下一个
    }
}

业务层代码

@Service
public class MessageServiceActive implements MessageService {
    @Autowired
    private JmsMessagingTemplate template;
    @Override
    public void getMessage(String id) {
        template.convertAndSend("AA",id);
        System.out.println("待发送短信的订单已纳入处理队列,id:"+id);
    }
}

这样我们的消息就可以流水线似的处理了,这是点对点的消息队列方式,还有订阅式的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

零维展开智子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值