SpringBoot

【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】

SpringBoot 开发实用篇

文章目录

  • SpringBoot
  • SpringBoot 开发实用篇
  • 5 整合第三方技术
    • 5.21 SpringBoot 整合 ActiveMQ
      • 5.21.1 SpringBoot 整合 ActiveMQ
      • 5.21.2 小结

5 整合第三方技术

5.21 SpringBoot 整合 ActiveMQ

5.21.1 SpringBoot 整合 ActiveMQ

【导入坐标】

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

【配置】

server:port: 80spring:activemq:broker-url: tcp://localhost:61616jms:template:default-destination: dingjiaxiong

OK,直接开干,创建真正的实现类

注掉之前那个bean

package com.dingjiaxiong.service.impl.activemq;import com.dingjiaxiong.service.MessageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.stereotype.Service;import java.util.ArrayList;/*** ClassName: MessageServiceActivemqImPL* date: 2022/10/22 18:53** @author DingJiaxiong*/@Service
public class MessageServiceActivemqImpl implements MessageService {//模拟一个消息队列@Autowiredprivate JmsMessagingTemplate messagingTemplate;@Overridepublic void sendMessage(String id) {System.out.println("待发送短信的订单已纳入处理队列,id " + id);//把订单id 加入消息队列messagingTemplate.convertAndSend(id);}//从消息队列中取出一条消息进行处理@Overridepublic String doMessage() {String id = messagingTemplate.receiveAndConvert(String.class);System.out.println("已完成短信发送业务,id " + id);return id;}
}

直接重启服务器,开始测试

OK, 这样aa 就放进去了,再来个bb

这就是生产消息

下面来消费消息

aa 处理完毕

再发一次

bb 也处理完成

如果再发一次

就会这样一直僵住,但是这个时候我再加一个

厉害了,我这边儿一生产,那边就消费了

【这就实现完毕了一个简单的ActiveMQ 的消息队列】

这个时候还可以查看服务器

点击Home 旁边的Queues

后面两个3,代表我们一共生产了3个消息,消费了3个消息

我们现在再生产一个,不消费

查看控制台

现在就还剩一个没有消费

看看连接

OK,做下来感觉还是挺简单的,有几个地方要提一下

以后每一个消息都发到这一个位置显然不太合理

这样可以自己决定要发到哪儿

举个栗子

重启服务器,生产三个

看看控制台

消费一个

差不多就是这样了,但是实际上,企业开发的时候

不会是说,主动点击什么东西才去消费一下,而是那边儿一生产,这边消费者可以立即消费

MQ 给我们提供了一套这样的机制【监听器】

只要一有消息,我就立马消费

创建一个全新的类

package com.dingjiaxiong.service.impl.activemq.listener;import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;/*** ClassName: MessageListener* date: 2022/10/22 19:40** @author DingJiaxiong*/@Component
public class MessageListener {//这个方法就可以用来处理消息【而且是监听式的】【一有消息,就能马上调用】@JmsListener(destination = "order.queue.id")public void receive(String id){System.out.println("已完成短信发送业务,id:" + id);}}

直接重启服务测试,【这次的效果应该是发完消息就会马上进行处理】

OK,就是这样,我一生产,它就马上消费

这上面两个是上一次没消费完的

看看控制台

这样就不用“手工消费”了

这样就能实现只要有消息进入队列,就能马上进行处理

【再介绍一个操作】

假如有这样一个场景

这个id 现在处理完后,后面还有一个业务也要使用这个id ,可以实现,它还可以向下转发

package com.dingjiaxiong.service.impl.activemq.listener;import org.springframework.jms.annotation.JmsListener;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.stereotype.Component;/*** ClassName: MessageListener* date: 2022/10/22 19:40** @author DingJiaxiong*/@Component
public class MessageListener {//这个方法就可以用来处理消息【而且是监听式的】【一有消息,就能马上调用】@JmsListener(destination = "order.queue.id")@SendTo("order.other.queue.id")  //这个意思就是说我现在消费完之后,,就把当前方法的返回值放到这个队列中【串起来了】public String receive(String id){System.out.println("已完成短信发送业务,id:" + id);return "new " + id;}}

重启服务器测试

看看控制台

这样我们还可以套娃,继续对新出来那个进行监听,实现一个流水线式的操作

【最后一个问题】

现在我们使用的模型是点对点的

如何更换发布订阅?

配置一下就行了

这样就启用了发布订阅模式

重启服务器测试

生产了四个,消费了四个

看看控制台

滑到下面

欧克欧克,回顾一下

  • 导入SpringBoot整合ActiveMQ坐标

  • 配置ActiveMQ(采用默认配置)

  • 生产与消费消息(使用默认消息存储队列)

  • 生产与消费消息(指定消息存储队列)

  • 使用消息监听器对消息队列监听

  • 流程性业务消息消费完转入下一个消息队列

5.21.2 小结
  1. SpringBoot整合ActiveMQ

SpringBoot SpringBoot 开发实用篇 5 整合第三方技术 5.21 SpringBoot 整合 ActiveMQ相关推荐

  1. SpringBoot运维实用篇

    SpringBoot2零基础到项目实战-基础篇 SpringBoot运维实用篇 从此刻开始,咱们就要进入到实用篇的学习了.实用篇是在基础篇的根基之上,补全SpringBoot的知识图谱.比如在基础篇中 ...

  2. SpringBoot整合第三方技术学习笔记(自用)

    SpringBoot整合第三方技术学习笔记 搬运黑马视频配套笔记 KF-4.数据层解决方案 KF-4-1.SQL 回忆一下之前做SSMP整合的时候数据层解决方案涉及到了哪些技术?MySQL数据库与My ...

  3. SpringBoot整合第三方技术

    SpringBoot整合第三方技术 文章目录 SpringBoot整合第三方技术 整合Junit SpringBoot整合MyBatis 整合Junit 在Boot环境下如何进行单元测设 注解:@Sp ...

  4. Springboot2 D3 SpringBoot开发实用篇 - 热部署 - 配置高级 - 测试

    SpringBoot开发实用篇 ​ 运维实用篇完结以后,开发实用篇采用日更新的形式发布给各位小伙伴,基本上是每天一集,目前已经发布完毕. ​ 开发实用篇中因为牵扯到SpringBoot整合各种各样的技 ...

  5. SpringBoot第二十二篇: 创建含有多module的springboot工程

    这篇文章主要介绍如何在springboot中如何创建含有多个module的工程,栗子中含有两个 module,一个作为libarary. 工程,另外一个是主工程,调用libary .其中libary ...

  6. SpringBoot开发实用

    SpringBoot 文档更新日志 版本 更新日期 操作 描述 v1.0 2021/11/14 A 基础篇 v1.0.1 2021/11/30 U 更新基础篇错别字若干,不涉及内容变更 v2.0 20 ...

  7. SpringBoot系统整理|运维实用篇|黑马视频

    写在前面:本博客主要是记录在学习黑马视频中遇到的问题和一些所思所想,日后忘记了,方便回顾查阅,后续遇到新的知识还会继续进行补充.本系列一共分四篇博客记录,分别是基础篇.运维实用篇.开发实用篇.原理篇. ...

  8. SpringBoot系统整理|基础篇|黑马视频

    写在前面:很早之前看了狂神的springboot快速入门,后来发现还是有很多开发知识点需要补充学习.乘着假期,将基础篇.运维实用篇.开发实用篇.原理篇一口气学习巩固,再次记录下学习笔记.系列笔记在sp ...

  9. SpringBoot 场景开发多面手成长手册

    小册介绍 SpringBoot之强大 SpringBoot 的强大之处不言而喻,其底层 SpringFramework 强大的 IOC 容器和 AOP 机制,加之 SpringBoot 的自动装配,使 ...

最新文章

  1. POJ 3260 多重背包+完全背包
  2. android7.1+msm8937双MIC改为单MIC(晓龙相机录像声音小)
  3. Quake3服务器客户端架构参考
  4. AIR工程中发生This application cannot be run. (Error: invalid application identifier) 错误
  5. java.util 找不到_java.util.MissingResourceException:找不到基本名...
  6. id 重启event_windows 2003 R2 系统自动重启了. event ID 6008
  7. wamp php5.6 mysql5.6,WampServer 3.0.6 多语言版 集成apache2.4.23 mysql5.7.14 php5.6.25-7.0.10 穿墙书店...
  8. pacemaker+corosync实现集群管理
  9. db h2 数据类型_H2数据库函数及数据类型概述-阿里云开发者社区
  10. OMG,学它!mac怎么安装java插件
  11. TreeView 动态绑定数据及在当前节点操作
  12. php 多个箭头,php连续的两个箭头-〉是什么意思??
  13. 毕业论文选题方法和论文各部分写作技巧
  14. 关于 Unicode 每个程序员应该知道的 5 件事
  15. 虐心的《西部世界》第二季:我看哭了 人类和AI傻傻分不清
  16. android inflate,android inflate详解
  17. 张驰咨询:关于企业选择六西格玛绿带培训人员,你需要知道这些
  18. GB/T18655-2010标准下的动力电池系统及其BMS电磁EMC测试
  19. Oracle学习的经验谈
  20. 三大数据库分页功能JDBC实现操作

热门文章

  1. Fetion(飞信) 2010版本协议分析
  2. 2019年10月8日股市走势预测
  3. 站长导航系统源码-修复版
  4. c++|纯虚函数之再谈星际争霸
  5. Python选择练习题(19~36)
  6. 用个人电脑搭建微小型服务器,实现动态网站的访问
  7. 大数据核心框架Hadoop
  8. Python 3.12 目标:还可以更快!
  9. godspeed机器人_来自深渊第二季剧情
  10. 苹果ios手机如何更换微信图标详细图文+视频教程,附微信图标下载