ActiveMQ基础入门

1 信息中间件的概述

消息中间件关注于数据的发送和接受,利用高效可靠的异步消息传递机制进行平台无关的数据交流,并基于数据通信集成分布式系统。

消息中间件是分布式系统中重要的组件,主要解决应用耦合、异步消息、流量削锋等问题。实现高性能、高可用、可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。

2 应用场景

解耦如图所示:

activemq 传文件 activemq入门_监听器


异步如图所示:

activemq 传文件 activemq入门_apache_02


削锋如图所示:

activemq 传文件 activemq入门_apache_03


日志处理kafka如图所示:

activemq 传文件 activemq入门_activemq 传文件_04


3 技术维度

API发送/接受

MQ高可用

MQ的集群和容错配置

MQ的持久化

延时发送/定时投递

签收机制

Spring/Spring Boot 整合

编程语言

4 下载与安装

1.下载官网:http://activemq.apache.org/如图所示:

activemq 传文件 activemq入门_分布式系统_05


2.通过MobaXterm上传到虚拟机里如图所示:

activemq 传文件 activemq入门_监听器_06


3.进行解压activemq的命令如下:

tar -zxvf apache-activemq-5.15.11-bin.tar.gz

如图所示:说明已经解压成功!

activemq 传文件 activemq入门_监听器_07


4.移动并修改名字的命令如下:

mv apache-activemq-5.15.11/ activemp

如图所示:说明修改成功!

activemq 传文件 activemq入门_分布式系统_08


5.启动activemq之前通过如下命令进行查看java是否安装:

java -version

如图所示:说明是安装了!

activemq 传文件 activemq入门_监听器_09


6.进入activemq目录下进行启动的命令如下:

cd /usr/local/activemp/   #进入activemq目录下
./bin/activemq start   #启动activemq
ps -ef | grep activemq   #查看activemq的状态

如图所示:说明启动成功!

activemq 传文件 activemq入门_分布式系统_10


7.通过浏览器访问http://192.168.171.131:8161/ 之前需要执行systemctl stop firewalld,如图所示:说明是activemq的管控台访问成功!

activemq 传文件 activemq入门_分布式系统_11


8.点击Manage ActiveMq broker 会跳出如图所示的界面!

activemq 传文件 activemq入门_分布式系统_12


9.账户和密码都是admin,点击登录即可!如图所示:

activemq 传文件 activemq入门_监听器_13


10.看见如图所示,说明已经安装成功!

activemq 传文件 activemq入门_分布式系统_14


11.管控台介绍

Number Of Pending Messages:等待消费的消息。

Number Of Consumers:消费者数量。

Messages Enqueued:进队消息数(进入队列的总数量,包括出队列的。这个数只增不减)。

Messages Dequeued:出队消息数(消费者消费掉的数量)。如图所示:

activemq 传文件 activemq入门_apache_15


12.JMS API 如图所示:

activemq 传文件 activemq入门_分布式系统_16


13 两大模式特性

1.队列模型 Queue(在点对点的消息传递域中,目的地被称为队列 Queue)。如图所示:

activemq 传文件 activemq入门_activemq 传文件_17


2.主题模型 Topic(在发布订阅消息传递域中,目的地被称为主题 Topic)。如图所示:

activemq 传文件 activemq入门_分布式系统_18


14.消费者三大消费情况

1.先生产3条消息,只启动1号消费者,消息怎么消费?

1号消费者3条消息全部消费掉。

2.先生产3条消息,先启动1号消费者,再启动2号消费者,消息怎么消费?

1号消费者3条消息全部消费,2号消费真无法消费。

3.先启动2个消费者,再生产6条消息,消息怎么消费?

两个消费者各消费3条消息。

15.两种消费方式

1.同步阻塞方式:receive()方法。

订阅者或消费者调用 MessageConsumer的receive()方法来接收消息,receive()方法在能够接收到消息之前(或超时之前)将一直阻塞。

2.异步非阻塞方式:监听器 onMessage()方法。

订阅者或消费者通过 MessageConsumer 的 setMessageListener(MessageListener messageListener) 方法注册一个消息监听器,当消息到达之后,系统自动调用监听器 MessageListener 的 onMessage(Message message) 方法。

16.Topic 发布订阅编码实现

先启动消费者,再启动生产者。

17.JMS开发步骤总结

1.创建一个 ConnectionFactory。

2.通过 ConnectionFactory 来创建 JMS Connection。

3.启动 JMS Connection。

4.通过 Connection 创建 Session。

5.通过 Session 创建 JMS Destination(Queue、Topic)。

6.创建 MessageProducer 或者创建 JMS Message,并设置 Destination。

7.创建 MessageConsumer 或者注册一个 JMS MessageListener。

8.发送或接收 JMS Message。

9.关闭所有的 JMS 资源(connection,session,producer,consumer等)。

18.Queue和Topic区别

1.是否能重复消费

a.Queue不可重复消费。

消息生产者生产消息发送到queue中,然后消息消费者从queue中取出并且消费消息。

消息被消费以后,queue中不再有存储,所以消息消费者不可能消费到已经被消费的消息。

Queue支持存在多个消费者,但是对一个消息而言,只会有一个消费者可以消费、其它的则不能消费此消息了。

当消费者不存在时,消息会一直保存,直到有消费消费。

b.Topic可以重复消费。

消息生产者(发布)将消息发布到topic中,同时有多个消息消费者(订阅)消费该消息。

和点对点方式不同,发布到topic的消息会被所有订阅者消费。

当生产者发布消息,不管是否有消费者。都不会保存消息。

如图所示:

activemq 传文件 activemq入门_分布式系统_19