ActiveMQ学习二(原生Java(JMS)操作,spring整合,springboot 整合)

学习视频来自于黑马:https://www.bilibili.com/video/BV1vJ41177j1?p=12
在这里插入图片描述

原生JMS API操作ActiveMQ

PTP(点对点)模式(生产者)

1、引入坐标(导入依赖)

在这里插入图片描述
创建项目
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

编写生产消息的测试类

在这里插入图片描述
创建会话参数2的值1是自动确认的意思
在这里插入图片描述
创建消息有很多种类型,这边暂时先用文本类型
在这里插入图片描述

为了看到这个效果可以打印一个
在这里插入图片描述
然后启动这个main方法
之后查看ActiveMQ网页控制台
在这里插入图片描述

PTP(点对点)模式(消费者)

创建项目跟上面一样

导入依赖

在这里插入图片描述

步骤

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
执行:
在这里插入图片描述
看ActiveMQ页面控制器
在这里插入图片描述

消费者使用消息监听器接受消息(推荐)

其他跟上面一样,只是由消费者普通接受改为了由消息监听器监听接受
在这里插入图片描述

弄完了后因为消费者直接接受完消息,没有消息了,我们可以用生产者再发送一条消息。
在这里插入图片描述
页面控制台
在这里插入图片描述

Pub/Sub发布订阅模式(生产者)

步骤
在这里插入图片描述

跟点对点模式只有一些小差异
在第五步那里改一下就行了
在这里插入图片描述

Pub/Sub发布订阅模式(消费者)

这边直接用监听器接受
在这里插入图片描述
测试:
正确顺序:

  1. 先启动消费者,一直开启

  2. 然后去启动生产者在这里插入图片描述

错误顺序:
上面的顺序反过来
得到反馈
在这里插入图片描述
Active后台:
在这里插入图片描述

区别:
点对点模式对于先启动消费者还是先启动生产者没有要求
发布订阅模式必须要先启动消费者再启动生产者才行

Spring与ActiveMQ整合

看完了底层的JMS操作ActiveMQ之后,我们来用spring整合activemq,整个的原理就是对原生JMS代码的封装,换句话来说就是对代码的简化

在这里插入图片描述

消息生产者

1、导入依赖

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
导入的依赖有:activemq-all、spring的相关依赖,spring-jms(spring整合activemq的包)、单元测试包

2、编写一个spring整合activeMQ的配置文件applicationContext-producer.xml

在这个配置文件里面可以体现spring框架如何跟ActiveMQ来进行一个整合,创建出了一个JMS的模板

步骤:

  1. 创建连接工厂对象 connectionFactory
  2. 创建缓存连接工厂 CachingConnectionFactory
    1. 注入连接工厂
    2. 缓存消息数据
  3. 创建用于点对点发送的JmsTemplate
    1. 注入缓存连接工厂
    2. 指定是否为发布订阅模式 false
  4. 创建用于发布订阅发送的JmsTemplate
    1. 注入缓存连接工厂
    2. 指定是否为发布订阅模式 true

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、编写测试类,使用JmsTemplate去发送消息
  1. 类注解RunWith(SpringJUnit4ClassRunner.class) junit与spring整合

  2. 类注解ContextConfiguration(“classpath:applicationContext-producer.xml”)加载spring配置文件

  3. Autowired注入JmsTemplate,指定@Qualifier点对点,从配置文件里面拿名字

  4. Autowired注入JmsTemplate,指定@Qualifier发布订阅,从配置文件里面拿名字
    在这里插入图片描述

  5. 点对点的发送
    在这里插入图片描述
    执行:
    在这里插入图片描述
    activeMQ后台
    在这里插入图片描述

  6. 发布订阅发送
    跟上一个区别就只有调用的jmsTemplate不一样
    在这里插入图片描述
    因为发布订阅的要需要先启动消费者再启动生产者才行,所以这边暂时不做测试,等写好了消费者再测试

消息消费者

再来创建一个项目
在这里插入图片描述
在这里插入图片描述

1、先导入依赖

跟上面一样

2、再写配置文件applicationContext-consumer.xml
  1. 连接工厂
  2. 缓存连接工厂
  3. 配置消息监听组件扫描
  4. 配置监听器(点对点)
  5. 配置监听器(发布订阅)
    在这里插入图片描述
    创建一个监听包
    在这里插入图片描述
    建立这两个监听类需要在配置好的路径下
    在这里插入图片描述
3、编写消费者测试类
  1. 点对点消费者监听器
    在这里插入图片描述
  2. 然后直接复制改名一下就行了,创建好了发布订阅模式下的监听器
    在这里插入图片描述
    这时候上面的消费者配置文件中的两个红色的类名就变成绿色的了。
    类名第一个大写,配置文件第一个小写
启动消费者监听
  1. ClassPathXmlApplicationContext加载spring配置
  2. ClassPathXmlApplicationContext.start()启动
  3. System.in.read阻塞,让程序一直处于等待状态
    在这里插入图片描述
    输出:他这边一启动是启动两个监听器,因为配置好了
    在这里插入图片描述
    因为之前启动了点对点模式的生产者,所以这边直接接收到了
    activemq后台控制台
    在这里插入图片描述

然后我们启动发布订阅的生产者
在这里插入图片描述

Springboot整合ActiveMQ

在这里插入图片描述

消息生产者

因为spring整合activemq的配置文件比较冗余,比较啰嗦代码量多

手动搭建springboot,用maven项目

1、导入依赖

锁定父版本会锁定springboot版本和他整合的框架的版本,因为springboot的starter的启动器和版本仲裁中心会自动给包定好版本
在这里插入图片描述
在这里插入图片描述

配置文件

配置当前服务名字,暂时没有用,结合springcloud做微服务架构的时候就需要用到这个名字,养成习惯就会带上这么个名字
在这里插入图片描述

创建springboot的启动类

在这里插入图片描述
这样一个springboot就搭建好了

测试类

在这里插入图片描述
在这里插入图片描述

测试:
activemq后台
在这里插入图片描述
点击进去浏览
在这里插入图片描述
点击这个
在这里插入图片描述
然后就可以看到发送的消息
在这里插入图片描述

这样提供方就写好了,目前是点对点模式
只要把这个变成true那么就能变成主题模式了
在这里插入图片描述

消费者

1、导入依赖

跟上面一样

2、配置文件

跟上面一样,改个端口号和服务名称

3、写个springboot启动类

跟上面一样

4、写个监听类

可以用于队列监听也可以监听主题监听,只需要改一下配置文件的类型就行了,跟生产者的时候一样。
注解:@JmsListener里面有个参数destination指定监听队列或者主题的名称
在这里插入图片描述

切换发布订阅模式,只要在application.yml文件中改为true
在这里插入图片描述
这样就变成了发布订阅模式

为了更灵活,可以去抽取目标的名字

也可以自己去定义一个生产者目标(queue或者topic)的名字
在这里插入图片描述
把目标提取到配置文件

在这里插入图片描述
使用@Value注解去获得配置文件中的值
在这里插入图片描述

同理:消费方也可以这样去改造
在配置文件上先写这么一个配置值
然后在@JmsListener上获取这么一个名字
在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

无极的移动代码

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

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

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

打赏作者

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

抵扣说明:

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

余额充值