ActiveMQ是什么
ActiveMQ是一个消息队列应用服务器(推送服务器)。支持JMS规范。
JMS概述
全称:Java Message Service ,即为Java消息服务,是一套java消息服务的API标准。(标准即接口)
实现了JMS标准的系统,称之为JMS Provider。
1.1.1 消息队列
1.1.1.1 概念
消息队列是在消息的传输过程中保存消息的容器,提供一种不同进程或者同一进程不同线程直接通讯的方式。
Producer:消息生产者,负责产生和发送消息到 Broker;
Broker:消息处理中心。负责消息存储、确认、重试等,一般其中会包含多个 queue;
Consumer:消息消费者,负责从 Broker 中获取消息,并进行相应处理;
常见消息队列应用
(1)、ActiveMQ
ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现。
(2)、RabbitMQ
RabbitMQ是一个在AMQP基础上完成的,可复用的企业消息系统。他遵循Mozilla Public License开源协议。开发语言为Erlang。
(3)、RocketMQ
由阿里巴巴定义开发的一套消息队列应用服务。
ActiveMQ能做什么
(1)实现两个不同应用(程序)之间的消息通讯。
(2)实现同一个应用,不同模块之间的消息通讯。(确保数据发送的稳定性)
ActiveMQ主要特点
(1)支持多语言、多协议客户端。语言: Java,C,C++,C#,Ruby,Perl,Python,PHP。应用协议: OpenWire,Stomp REST,WS Notification,XMPP,AMQP
(2)对Spring的支持,ActiveMQ可以很容易整合到Spring的系统里面去。
(3)支持高可用、高性能的集群模式。
PTP模式(point to point)
--消息模型
消息生产者生产消息发送到queue中,然后消息消费者从queue中取出并且消费消息。
消息被消费以后,queue中不再有存储,所以消息消费者不可能消费到已经被消费的消息。
Queue支持存在多个消费者,但是对一个消息而言,只会有一个消费者可以消费、其它的则不能消费此消息了。
当消费者不存在时,消息会一直保存,直到有消费消费
我们的入门示例,就是采用的这种PTP服务模式。
TOPIC(主题订阅模式)
--消息模型
消息生产者(发布)将消息发布到topic中,同时有多个消息消费者(订阅)消费该消息。
和点对点方式不同,发布到topic的消息会被所有订阅者消费。
当生产者发布消息,不管是否有消费者。都不会保存消息
所以,主题订阅模式下,一定要先有消息的消费者(订阅者),后有消息的生产者(发布者)。