1、ActiveMQ
activeMQ是Apache推出的一款开源的支持JMS1.1和J2EE1.4规范的消息中间件。
功能:用来帮助实现高可用、高性能、可伸缩、和安全的企业级面向消息服务的系统。
2、消息中间件【MOM】
MOM基本功能:将信息以消息的形式,从一个应用程序传送到另外一个或者多个应用程序。
特点:
(1)消息异步接收,消息发送者不需要等待消息接收者的响应,减少软件多系统集成的耦合性。
(2)消息可靠接收,确保消息在中间件可靠保存,多个消息可以组成一个原子事务。
3、安装ActiveMQ[linux]
前言:ActiveMQ使用61616提供JMS服务,使用8161提供管理控制台服务。
【1】首先确保你的linux系统上安装了JDK
java -version
【2】下载 ActiveMQ 压缩包,并且解压
【3】进入bin目录 执行 ./activemq start 关闭:./activemq stop
使用指定的配置文件来启动: ./activemq start xbean:file: .../conf/activemq-2.xml[举例]
【4】在浏览器地址栏输入ip:8186/admin [列如:http://192.168.22.128:8161/admin/]
出现这样的界面表示安装并启动成功。【账号和密码都是admin】
如果访问显示超时请检查你的防火墙。关闭防火墙或者修改配置
vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 61616 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8161 -j ACCEPT
重启防火墙:service iptables restart
4、JAVA-DEMO
【1】创建一个maven工程引入jar
【2】发送消息
【3】查看消息是否发送成功
【4】接收消息
5、JMS
JMS是Java Message Service Java消息服务是JAVA EE中的一个技术。
JMS规范:JMS定义了Java中访问消息中间件的接口,并没有给予实现,实现JMS接口的消息中间件称为JMS Provider 。列如:ActiveMQ.
JMS Message:
(1)消息头:每个消息头字段都有相应的getter和setter方法。
(2)消息属性:除消息头字段以外的值,使用消息属性。
(3)消息体:封装具体的消息数据。
JMS Producer:消息生产者,创建和发送JMS消息的客户端应用。
JMS Consumer:消息消费者,接收和处理JMD消息的客户端应用。
消息消费两种方式:
(1)同步消费:通过调用消费者的receive方法从目的地中显示提取消息,receive方法可以一直阻塞到消息到达。
(2)异步消费:客户可以为消费者注册一个消息监听器,以定义在消息到达时所采取的动作。
JMS Domains 消费传递域:
(1)点对点(PTP):每个消息只能有一个消费者。消费的生成者和消费者之间没有时间上的相关性。无论消费者在生产者发送消息的时候是否处于运行状态,它都可以提取到消息。
(2)发布/订阅消息传递域:每个消息可以有多个消费者。生成者和消费者之间有时间上的相关性,订阅一个主体的消费者只能消费它订阅后的消息。JMS允许客户创建持久订阅,消费者可以在它未激活的状态下消费消息。
注意:点对点消息域,目的地被称为队列。发布/订阅消息域目的地称为主题。
6、JMS可靠机制
JMS消息只有被确认之后,才认为是已经被成功消费了。消息的成功消费通常包含三个阶段:客户接收消息、客户处理消息和消息被确认。
以下都要在非事务的情况下:
Session.AUTO_ACKNOWLEDGE: 当客户成功的从receive方法返回的时候,或者从MessageListener.onMessage方法成功返回的时候,会话自动确认客户收到的消息确认收到消息。
Session.CLIENT_ACKNOWLEDGE:客户端需要调用message.acknowledge()方法确认消息,确认一个被消费的消息将会自动确认所有已被会话消费的消息。
7、非持久topic消息DEMO
发布消息
接收消息
8、持久化topic消息DEMO
发送者
消费者
9、Broker
Broker:相当于一个ActiveMQ服务器实例。
使用Broker嵌入式构建java应用:
【1】启动Broker服务,相当于启动一个ActiveMQ服务。
【2】修改发送地址和接收地址
【3】测试消息是否可以正常发送接收。
10、SpringBoot整合ActiveMQ
生产者:
pom.xml
yml文件
MqConfig.java
produce.java
消费者:
pom.xml
yml文件
Consumer.xml