ActiveMQ基础入门
1 信息中间件的概述
消息中间件关注于数据的发送和接受,利用高效可靠的异步消息传递机制进行平台无关的数据交流,并基于数据通信集成分布式系统。
消息中间件是分布式系统中重要的组件,主要解决应用耦合、异步消息、流量削锋等问题。实现高性能、高可用、可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。
2 应用场景
解耦如图所示:
异步如图所示:
削锋如图所示:
日志处理kafka如图所示:
3 技术维度
API发送/接受
MQ高可用
MQ的集群和容错配置
MQ的持久化
延时发送/定时投递
签收机制
Spring/Spring Boot 整合
编程语言
4 下载与安装
1.下载官网:http://activemq.apache.org/如图所示:
2.通过MobaXterm上传到虚拟机里如图所示:
3.进行解压activemq的命令如下:
tar -zxvf apache-activemq-5.15.11-bin.tar.gz
如图所示:说明已经解压成功!
4.移动并修改名字的命令如下:
mv apache-activemq-5.15.11/ activemp
如图所示:说明修改成功!
5.启动activemq之前通过如下命令进行查看java是否安装:
java -version
如图所示:说明是安装了!
6.进入activemq目录下进行启动的命令如下:
cd /usr/local/activemp/ #进入activemq目录下
./bin/activemq start #启动activemq
ps -ef | grep activemq #查看activemq的状态
如图所示:说明启动成功!
7.通过浏览器访问http://192.168.171.131:8161/ 之前需要执行systemctl stop firewalld
,如图所示:说明是activemq的管控台访问成功!
8.点击Manage ActiveMq broker 会跳出如图所示的界面!
9.账户和密码都是admin,点击登录即可!如图所示:
10.看见如图所示,说明已经安装成功!
11.管控台介绍
Number Of Pending Messages:等待消费的消息。
Number Of Consumers:消费者数量。
Messages Enqueued:进队消息数(进入队列的总数量,包括出队列的。这个数只增不减)。
Messages Dequeued:出队消息数(消费者消费掉的数量)。如图所示:
12.JMS API 如图所示:
13 两大模式特性
1.队列模型 Queue(在点对点的消息传递域中,目的地被称为队列 Queue)。如图所示:
2.主题模型 Topic(在发布订阅消息传递域中,目的地被称为主题 Topic)。如图所示:
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的消息会被所有订阅者消费。
当生产者发布消息,不管是否有消费者。都不会保存消息。
如图所示: