Springboot整合ActiveMQ实现消息队列的过程浅析

 更新时间:2023年02月10日 11:14:38   作者:零维展开智子  
昨天仔细研究了activeMQ消息队列,也遇到了些坑,下面这篇文章主要给大家介绍了关于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);
    }
}

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

到此这篇关于Springboot整合ActiveMQ实现消息队列的过程浅析的文章就介绍到这了,更多相关Springboot整合ActiveMQ内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java中notify()和notifyAll()的使用区别

    Java中notify()和notifyAll()的使用区别

    本文主要介绍了Java中notify()和notifyAll()的使用区别,文中通过示例代码介绍的非常详细,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • java使用OGEngine开发2048

    java使用OGEngine开发2048

    众所周知OGEngine是国人对AndEngine改进后的国产Java编程的游戏引擎,除了支持3D游戏这个鸡肋功能之外AndEngine的功能OGEngine都有,而且AndEngine缺少的多点触摸功能也被国人完善了。今天我们就尝试下使用OGEngine制作热门游戏2048.
    2015-03-03
  • Java8的Lambda表达式你真的会吗

    Java8的Lambda表达式你真的会吗

    这篇文章主要介绍了Java8的Lambda表达式你真的会吗,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • RabbitMQ高级应用之消费端限流策略basicQos详解

    RabbitMQ高级应用之消费端限流策略basicQos详解

    这篇文章主要介绍了RabbitMQ高级应用之消费端限流策略basicQos详解,高并发情况下,队列里面一瞬间就就积累了上万条数据,但是消费者无法同时处理这么多请求,这种场景下我们就需要对消费端进行限流,需要的朋友可以参考下
    2023-08-08
  • Java语言实现扫雷游戏(2)

    Java语言实现扫雷游戏(2)

    这篇文章主要为大家详细介绍了Java语言实现扫雷游戏第二部分代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • SpringBoot使用JavaCV处理rtsp流的示例代码

    SpringBoot使用JavaCV处理rtsp流的示例代码

    这篇文章主要为大家详细介绍了SpringBoot使用JavaCV处理rtsp流,文中的示例代码讲解详细,具有一定的参考价值,感兴趣的小伙伴可以跟随小编一起了解一下
    2024-02-02
  • Java8的default方法详细介绍

    Java8的default方法详细介绍

    这篇文章主要介绍了Java8的default方法,详细介绍了什么是default方法,在多继承时的处理等,需要的朋友可以参考下
    2014-04-04
  • java、python、JavaScript以及jquery循环语句的区别

    java、python、JavaScript以及jquery循环语句的区别

    本篇文章主要介绍java、python、JavaScript以及jquery的循环语句的区别,这里整理了它们循环语句语法跟示例,以便大家阅读,更好的区分它们的不同
    2016-07-07
  • JavaWeb导出Excel文件并弹出下载框

    JavaWeb导出Excel文件并弹出下载框

    这篇文章主要为大家详细介绍了JavaWeb导出Excel文件并弹出下载框的相关资料,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • Spring Boot 中的静态资源放置位置

    Spring Boot 中的静态资源放置位置

    这篇文章主要介绍了Spring Boot 中的静态资源到底要存放哪里,很多童鞋对这个问题很纠结,接下来通过本文给大家介绍下,需要的朋友可以参考下
    2019-04-04

最新评论