首先,什么是消息中间件?
以CSDN博客为例,如果有人关注了我的博客,那么每当我发布新的博客时,都会在我的博客里面得到通知,这就是一种广播订阅模式。而如何实现这一功能呢?消息中间件就可以帮助我们!
我把最新的博客信息发给 消息中间件服务器 ,用户系统里面的消息中间件客户端,就会自动的把消息获取出来显示,这样就达到了一种广播的效果。
消息中间件目前市面上有很多种,比如:ActiveMQ,RabbitMQ、Kafka、RocketMQ等,这里我就从ActivityMQ入手,从源码入手,一块学习一下消息中间件。
一、ActiveMQ 概念
ActiveMQ 是用 Java 语言开发的消息中间件,简单易用!
二、服务端部署ActiveMQ
1、下载ActiveMQ
这里我已经下载好了5.15.8版本的ActiveMQ 并放在百度网盘里面,大家可以根据链接下载:链接:https://pan.baidu.com/s/1X3Dc21OLNOo9IsOPjkRtVA
提取码:vpew
2、启动ActiveMQ
直接双击win32或者win64文件夹下的bat命令即可启动ActiveMQ,这里我的电脑是64为的,所以打开的是win64文件夹下的bat:
启动成功的界面如下图:
3、访问地址进行测试
启动ActiveMQ以后,我们要测试一下我们是否真正启动成功。 访问地址 http://127.0.0.1:8161/ 就可以看到如图所示的界面:
这就是服务器启动activemq成功以后的管理界面,在里面就可以看到都有哪些消息被创建了,哪些被消费了。
4、管理页面
点击上图中的Manage ActiveMQ broker即可进入管理页面,首先需要登录如下图:
默认的账号也密码都是admin,输入即可登录如下图:
这里可以观察到 队列数据和主题数据等信息,不过还没有客户端发消息来,所以也没有数据,接下来我们就来学习一下队列数据和主题数据相关的知识。
三、队列模式
模式介绍
ActiveMQ有两种有两种模式,分别为队列模式和主题模式。
队列模式,其实就是分食模式。 比如生产方发了 10条消息到 activeMQ 服务器, 而此时有多个 消费方,那么这些消费方就会瓜分这些10条消息,一条消息只会被一个消费方得到。类似于抢红包的游戏。
主题模式,就是订阅模式。 比如生产方发了10条消息,而此时有多个消费方,那么多个消费方都能得到这 10条消息,就如同订阅公众号那样。
下面我们来进行队列模式的开发!
1、首先新建一个maven(或者springboot)项目,然后在pom中导入相应的依赖如下图:
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
<version>5.15.9</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>4.3.1</version>
</dependency>
这里我们导入了两个相关的依赖:activeMQ的依赖和hutool的依赖。hutool是一个java工具包,不了解的可以网上搜一下。
2、 写一个工具类来判断ActiveMQ服务是否已经启动,因为有些同学写代码的时候很粗心,测试的时候可能忘了启动服务,但是又不知道错在哪里,所以我们写一个工具类来自动判断是否已经启动了ActiveMQ。代码如下:
package