带着新人学springboot的应用06(springboot+RabbitMQ 中)
上一节说了这么多废话,看也看烦了,现在我们就来用鼠标点点点,来简单玩一下这个RabbitMQ。
注意:这一节还是不用敲什么代码,因为上一节我们设置了那个可视化工具,我们先用用可视化工具熟悉一下流程。
打开可视化页面,http://localhost:15672
顺便说一下RabbitMQ中的持持久化:这里持久化分为三种:消息持久化,交换器持久化,队列持久化。。。
举个例子,就简单说说交换器持久化,其实就是为了防止将消息发到交换器了,但是RabbitMQ服务器突然暴毙,没用了,那数据不就丧失了么?于是弄个持久化出来,可以将传给交换器的数据存到硬盘里,即使RabbitMQ服务器没用了,但是数据还在硬盘里啊,我们只需要维修好服务器就正常使用了。其他两个持久化也类似,自己查查
首先,我们来创建三个交换器(direct,fanout,topic),每种类型来一个;

添加好了三个在这里

然后我们添加几个队列,跟上面基本一样。
不过要注意一点:因为默认是将Queue的名字作为BindingKey,所以取名字的时候,用英语的句号分隔成多个单词,类似”“hello.123"、"ddd.abc.aaa”,而且后面的模糊匹配也是根据这些单词进行匹配的。
我新建四个队列,animal animal.dog animal.cat black.dog

我新建的四个队列:

下一步是干什么呢?肯定是将这些交换器和Queue绑定起来啊!下面图中的这个RoutingKey就是指的是BindingKey,希望能够知道,是为了方便理解,所以很多版本都叫做BindingKey,不然都叫做RoutingKey的话,初学者肯定一脸蒙逼,what?到底是哪个RoutingKey?有什么区别啊?
绑定direct交换器


绑定四次,这个交换器就绑定完成,再换下一个交换器(记住,topic这个可以模糊匹配的交换器绑定的时候有点特殊)

topic交换器绑定
由于可以支持模糊匹配,那么这个BindingKey可以是通配符#和*,其中#代表多个单词,可以表示零个,* 代表一个单词。
举个例子,topic交换器和其中一个Queue绑定的BindingKey为“hello.#”,消息的RoutingKey为“hello.world”,那么这个消息就会传给这个Queue一份。
ok,继续绑定

fanout交换器绑定
其实这个交换器绑定BindingKey没啥用,因为这个用的是广播模式,只要是和这个交换器绑定的Queue,都会发一份消息给它

测试:
1.我们先给direct交换器发消息
进入direct交换器

然后切换到队列,发现有数据到了,就在animal队列中

2.给fanout交换器发消息


查看消息,随意点开一个队列,你也可以试试其他的

3.给topic交换器发消息


下面来手动测试一下消费者从队列中取消息。
这里又要提一下一个东西:假如一个消费者从队列中刚刚取到数据,啪一下,消费者那边停电了或者退出了!而RabbitMQ中的Queue管你这么多啊,都看到从我这里拿数据了,于是就删除了队列中的数据,这样数据就造成丢失了!
于是一些大牛就设计啊,当消费者从队列中取到数据之后,Queue先不要删除数据,必须等消费者那边处理完这条数据然后回复Queue:“ok,我处理完了,你可以删除数据了!”,然后Queue就删除这条数据。
我们手动来测试这个过程:
点开那个animal队列,


然后你再获取数据,获取一条,队列就删除一条,最后队列显示0条

这一节就用可视化工具手动的粗略测试了一下RabbitMQ的全过程,想必大家应该有了一个初步的认识,比上一节看了那么多废话应该好了不少。
当然,我们在springboot程序中肯定不可能手动的去操作,这太麻烦了,我们会调用一个xxxTemplate(这个模板的套路应该都知道了,是spring惯用套路,之前的JdbcTemplate,HibernateTemplate,RedisTemplate应该还记得吧!)的东西来发送消息,然后消费消息也会有个类似监听器的东西自动监听,我们完全不用操心。
贯彻springboot的优点,尽量少的配置。
下一节我们说说springboot简单整合RabbitMQ吧!对了,建议大家好好找找有关RabbitMQ的博客看看,因为知识点比较多,以及持久化,消息确认还有其他我没说到的细节都好好看看,我也就只能说个大概的流程,具体的要实际用了才知道。
带着新人学springboot的应用06(springboot+RabbitMQ 中)的更多相关文章
- 带着新人学springboot的应用01(springboot+mybatis+缓存 上)
上一篇结束,第一次做一个这么长的系列,很多东西我也是没有说到,也许是还没有想到,哈哈哈,不过基本的东西还是说的差不多了的.假如以后碰到了不会的,随便查查资料配置一下就ok. 咳,还有大家如果把我前面的 ...
- 带着新人学springboot的应用07(springboot+RabbitMQ 下)
说一两句废话,强烈推荐各位小伙伴空闲时候也可以写写自己的博客!不管水平高低,不管写的怎么样,不要觉得写不好或者水平不够就不写了(咳,我以前就是这样的想法...自我反省!). 但是开始写博客之后,你会发 ...
- 带着新人学springboot的应用04(springboot+mybatis+redis 完)
对于缓存也说了比较多了,大家对下图这一堆配置类现在应该有些很粗略的认识了(因为我也就很粗略的认识了一下,哈哈!),咳,那么我们怎么切换这个缓存呢?(就是不用springboot提供的默认的Simple ...
- 带着新人学springboot的应用13(springboot+热部署)
spring cloud我想做成一个系列,所以spring cloud+eureka后面会慢慢说到的,有兴趣的小伙伴可以关注后续! 这一节就简单说说springboot的热部署了(我一直想不通为什么叫 ...
- 带着新人学springboot的应用11(springboot+Dubbo+Zookeeper 上)
这次说个在大型项目比较常见的东西,就是分布式,分布式到底是个什么东西呢?概念太大,不好说,就像刚学javaee的人问你,什么是web啊,什么是spring啊等等,你可能觉得,这个东西我好像知道,但是用 ...
- 带着新人学springboot的应用10(springboot+定时任务+发邮件)
接上一节,环境一样,这次来说另外两个任务,一个是定时任务,一个是发邮件. 1.定时任务 定时任务可以设置精确到秒的准确时间去自动执行方法. 我要一个程序每一秒钟说一句:java小新人最帅 于是,我就写 ...
- 带着新人学springboot的应用09(springboot+异步任务)
本来想说说检索的,不过不知道什么鬼,下载ElasticSearch太慢了,还是放一下,后面有机会再补上!今天就说个简单的东西,来说说任务. 什么叫做任务呢?其实就是类中实现了一个什么功能的方法.常见的 ...
- 带着新人学springboot的应用08(springboot+jpa的整合)
这一节的内容比较简单,是springboot和jpa的简单整合,jpa默认使用hibernate,所以本质就是springboot和hibernate的整合. 说实话,听别人都说spring data ...
- 带着新人学springboot的应用05(springboot+RabbitMQ 上)
这次就来说说RabbitMQ,这个应该不陌生了,随便一查就知道这个是用来做消息队列的.(注意:这一节很多都是概念的东西,需要操作的比较少) 至于AMQP协议(Advanced Message Queu ...
随机推荐
- AutoCAD下载
AutoCAD 2019 64位破解版 附注册机和安装教程 1.71G AutoCAD 2019 64位精简优化版 珊瑚の海简体中文版691.08M
- PBRT笔记(7)——反射模型
基础术语 表面反射可以分为4大类: diffuse 漫反射 glossy specular 镜面反射高光 perfect specular 完美反射高光 retro-reflective distri ...
- Exp1 PC平台逆向破解 20164302 王一帆
1 逆向及Bof基础实践说明 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程 ...
- 二叉查找树的C++实现
#include <iostream> #include <algorithm> #include <stack> using namespace std; /// ...
- centos7系统下配置jdk环境变量
用到的工具, Xshell5, Xftp5 现在的jdk7下载链接不好找, 打开下载界面, 全是jdk8的, 我这里提供了一份百度云的下载地址http://pan.baidu.com/s/1jHF9m ...
- 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第6章编程练习4
#include <iostream> using namespace std; const int strsize=30; const int BOPSIZE=5; void showm ...
- 解决iPhone Safari 兼容性CSS背景显示不全问题
https://jingyan.baidu.com/article/ca2d939d014ccbeb6c31ceb7.html 看到了这个文章解决的.中心部分小于980的时候回出现.苹果手机中的saf ...
- Linux系统下,在文件中查找某个字符串
在normal模式下按下/即可进入查找模式,输入要查找的字符串并按下回车. Vim会跳转到第一个匹配.按下n查找下一个,按下N查找上一个. Vim查找支持正则表达式,例如/vim$匹配行尾的" ...
- php GD库快速消耗CPU资源漏洞 CVE-2018-5711测试
漏洞说明: 用一张GIF图片就可导致服务器发生崩溃直至宕机,在现实中非常容易利用. 影响版本: PHP 5 < 5.6.33 PHP 7.0 < 7.0.27 PHP 7.1 < 7 ...
- [Swift]LeetCode70. 爬楼梯 | Climbing Stairs
You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb ...