一、前言

最近小编在学习消息队列,然后选中了ActiveMq,来进行学习.于是探索了好久,来整理一下自己的学习心得!大家一起学习,希望对你有用.我把一些我自己的理解写在注释里了注意看!!

二、ActiveMq的下载和使用

  • 下载

大家直接下载解压就可以使用了--->

链接:https://pan.baidu.com/s/1W0MZtQAya0mOEKMWqJK1iA

提取码:29mz

  • 使用

三、依赖准备

  1. <!-- activemq -->
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-activemq</artifactId>
  5. </dependency>

四、yml文件配置

  1. spring:
  2. activemq:
  3. broker-url: tcp://127.0.0.1:61616
  4. user: admin
  5. password: admin
  6. jms:
  7. pub-sub-domain: true # 默认为false:queue true:topic
  8. queue: queue_mq # 点对点消费名字
  9. topic: topic_mq # 订阅式消费名字

五、配置Bean

  1. import org.apache.activemq.command.ActiveMQQueue;
  2. import org.apache.activemq.command.ActiveMQTopic;
  3. import org.springframework.beans.factory.annotation.Value;
  4. import org.springframework.context.annotation.Bean;
  5. import org.springframework.context.annotation.Configuration;
  6. import org.springframework.jms.annotation.EnableJms;
  7. import javax.jms.Queue;
  8. import javax.jms.Topic;
  9. @Configuration
  10. @EnableJms
  11. public class ActiveMqConfig {
  12. @Value("${queue}")//对应yml文件中定义的queue
  13. private String queue;
  14. @Value("${topic}")//对应yml文件中定义的topic
  15. private String topic;
  16. /**
  17. * 创建点对点的队列 一个消息只能被一个消费者消费 --- 一对一
  18. * @return
  19. */
  20. @Bean
  21. public Queue queue(){
  22. return new ActiveMQQueue(queue);
  23. }
  24. /**
  25. * 创建订阅式的队列 一个消息可以被多个消费者消费 --- 一对多
  26. * @return
  27. */
  28. @Bean
  29. public Topic topic(){
  30. return new ActiveMQTopic(topic);
  31. }
  32. }

六、创建生产者(Queue+Topic)

  1. import org.springframework.beans.factory.annotation.Autowired;
  2. import org.springframework.jms.core.JmsMessagingTemplate;
  3. import org.springframework.web.bind.annotation.GetMapping;
  4. import org.springframework.web.bind.annotation.RequestParam;
  5. import org.springframework.web.bind.annotation.RestController;
  6. import javax.jms.Queue;
  7. import javax.jms.Topic;
  8. @RestController
  9. public class ProducerController {
  10. @Autowired
  11. private Queue queue;
  12. @Autowired
  13. private Topic topic;
  14. @Autowired
  15. private JmsMessagingTemplate jmsMessagingTemplate;
  16. /**
  17. * 点对点的消息队列的生产者
  18. * @param string
  19. */
  20. @GetMapping("/queue")
  21. public void sendMsgQueue(@RequestParam String string){
  22. System.out.println("消息已经发送,准备被消费,消息为 ---> "+string);
  23. jmsMessagingTemplate.convertAndSend(queue,string);
  24. }
  25. /**
  26. * 一对多的消息队列的生产者
  27. * @param string
  28. */
  29. @GetMapping("/topic")
  30. public void sendMsgTopic(@RequestParam String string){
  31. System.out.println("消息已经发送,准备被消费,消息为 ---> "+string);
  32. jmsMessagingTemplate.convertAndSend(topic,string);
  33. }
  34. }

七、创建消费者(Topic模式下)

  1. import org.springframework.jms.annotation.JmsListener;
  2. import org.springframework.stereotype.Component;
  3. @Component
  4. public class TopicConsumer {
  5. /**
  6. * 监听消息,名字为生产者发送的名字,要一致,不然监听不到.
  7. * 因为是订阅者模式,可以有多个消费者,我们这里举两个来进行测试
  8. * @param string
  9. */
  10. @JmsListener(destination = "${topic}")
  11. public void consumerTopicOne(String string){
  12. System.out.println("我是消费者一号:消费消息成功,信息为---> "+string);
  13. }
  14. @JmsListener(destination = "${topic}")
  15. public void consumerTopicTwo(String string){
  16. System.out.println("我是消费者二号:消费消息成功,信息为---> "+string);
  17. }
  18. }

八、测试结果(Topic模式下)

九、ActiveMq网页版查看是否成功(Topic模式下)

网站地址 http://127.0.0.1:8161/admin/ 账号密码都是admin



十、创建消费者(Queue模式下)

首先把yml文件中的配置修改为Queue:pub-sub-domain: false

  1. import org.springframework.jms.annotation.JmsListener;
  2. import org.springframework.stereotype.Component;
  3. @Component
  4. public class QueueConsumer {
  5. /**
  6. * 监听消息,名字为生产者发送的名字,要一致,不然监听不到.
  7. * 因为是队列模式,只能消费者
  8. * @param string
  9. */
  10. @JmsListener(destination = "${queue}")
  11. public void consumerQueue(String string){
  12. System.out.println("消费消息成功,信息为---> "+string);
  13. }
  14. }

十一、测试结果(Queue模式下)

十二、ActiveMq网页版查看是否成功(Queue模式下)

十三、总结

这样我们就搭建好了,并且测试没有问题,有问题留言哦.比较合适刚刚学习的童鞋们,期待您的关注,一起学习,一起提高哦!!!

SpringBoot整合ActiveMq实现Queue和Topic两种模式(看不懂你来打我)的更多相关文章

  1. ActiveMQ的queue以及topic两种消息处理机制分析

    1    queue与topic的技术特点对比 对比项 Topic Queue 概要 Publish Subscribe messaging 发布订阅消息 Point-to-Point 点对点 有无状 ...

  2. 解决Springboot整合ActiveMQ发送和接收topic消息的问题

    环境搭建 1.创建maven项目(jar) 2.pom.xml添加依赖 <parent> <groupId>org.springframework.boot</group ...

  3. 实例讲解Springboot整合MongoDB进行CRUD操作的两种方式

    1 简介 Springboot是最简单的使用Spring的方式,而MongoDB是最流行的NoSQL数据库.两者在分布式.微服务架构中使用率极高,本文将用实例介绍如何在Springboot中整合Mon ...

  4. 消息队列:快速上手ActiveMQ消息队列的JMS方式使用(两种模式:Topic和Queue的消息推送和订阅)

    1.实现功能 希望使用一套API,实现两种模式下的消息发送和接收功能,方便业务程序调用 1.发送Topic 2.发送Queue 3.接收Topic 4.接收Queue 2.接口设计 根据功能设计公共调 ...

  5. SpringBoot系列八:SpringBoot整合消息服务(SpringBoot 整合 ActiveMQ、SpringBoot 整合 RabbitMQ、SpringBoot 整合 Kafka)

    声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.概念:SpringBoot 整合消息服务 2.具体内容 对于异步消息组件在实际的应用之中会有两类: · JMS:代表作就是 ...

  6. SpringBoot整合ActiveMQ和开启持久化

    一.点对点 1.提供者目录展示 2.导入依赖 <dependency> <groupId>org.springframework.boot</groupId> &l ...

  7. ActiveMQ 笔记(四)Spring\SpringBoot 整合 Activemq

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 一.Spring 整合Activemq 1.所需jar包 <dependencies> &l ...

  8. Web项目容器集成ActiveMQ & SpringBoot整合ActiveMQ

    集成tomcat就是随项目启动而启动tomcat,最简单的方法就是监听器监听容器创建之后以Broker的方式启动ActiveMQ. 1.web项目中Broker启动的方式进行集成 在这里采用Liste ...

  9. SpringBoot整合ActiveMQ快速入门

    Spring Boot 具有如下特性: 为基于 Spring 的开发提供更快的入门体验 开箱即用,没有代码生成,也无需 XML 配置.同时也可以修改默认值来满足特定的需求. 提供了一些大型项目中常见的 ...

随机推荐

  1. MindInsight:一款基于MindSpore框架的训练可视化插件

    技术背景 在深度学习或者其他参数优化领域中,对于结果的可视化以及中间网络结构的可视化,也是一个非常重要的工作.一个好的可视化工具,可以更加直观的展示计算结果,可以帮助人们更快的发掘大量的数据中最有用的 ...

  2. jar\war\SpringBoot加载包内外资源的方式,告别FileNotFoundException吧

    工作中常常会用到文件加载,然后又经常忘记,印象不深,没有系统性研究过,从最初的war包项目到现在的springboot项目,从加载外部文件到加载自身jar包内文件,也发生了许多变化,这里开一贴,作为自 ...

  3. Vue数据双向绑定不起作用、Vue如何正确的手动添加json数据、Vue视图层不刷新、手动刷新视图层

    Vue.set(obj,"key","value") 如果接收到来自服务器的消息时,我们需要对其进性进一步处理 我们想当然的会直接将数据添加进json 像这样: ...

  4. Vue权限路由实现总结

    前言 年前完工了做了半年的铁路后台管理系统,系统整体业务比较复杂,这也是我到公司从 0 到 1 的 一个完整系统实践,做这个系统过程中踩了不少坑,也学到了很多. 做完这个系统没多久,紧接着又一个系统来 ...

  5. nginx+waf防火墙

    1.官网下载nginx源码包(nginx-1.20.0.tar.gz) 新建nginx安装目录​mkdir -p /opt/nginx​新增nginx运行用户​useradd -s /sbin/nol ...

  6. sqliab刷题笔记-联合注入

    Less-1 测试是字符型还是数字型 判断所在字段数 查看显示值 可以看出显示2,3位置.因此我们选择2的位置进行联合注入 查看表名 我们要对admin,users等字符敏感 查看admin表中的字段 ...

  7. 使用Elastic Job的分片配置加速任务执行和提高资源利用率

    上一篇,我们介绍了如何使用Elastic Job实现定时任务.解决了使用@Scheduled来实现时候存在的竞争问题,同时也实现了定时任务的高可用执行. 然而,还有一类问题是我们在做定时任务时候容易出 ...

  8. [考试总结]noip模拟23

    因为考试过多,所以学校的博客就暂时咕掉了,放到家里来写 不过话说,vscode的markdown编辑器还是真的很好用 先把 \(noip\) 模拟 \(23\) 的总结写了吧.. 俗话说:" ...

  9. charles f配置sslproxy 对protobuf 接口抓包 -不推荐

    charles 配置sslproxy help-安装电脑证书 手机连接访问电脑,下载允许手机 手机连接vpn 手机访问chls.pro/ssl -下载证书 request可以看到protobuf_tx ...

  10. 犀牛Rhino 7.0中文版安装破解教程

    犀牛Rhino 7.0中文版是一款专业的.功能强大的三维建模软件,利用它可以创建.编辑.分析.提供.渲染.动画与转换NURBS线条.曲面.实体与多边形网格:它能轻易整合3DS MAX 与Softima ...