ActiveMQ是Apache软件基金下的一个开源软件,它遵循JMS1.1规范(Java Message Service),是消息队列服务,是面向消息中间件(MOM)的最终实现,它为企业消息传递提供高可用、出色性能、可扩展、稳定和安全保障。
在ActiveMQ中,生产者(Producer)发送消息到Queue或者Topic中,消费者(consumer)通过ActiveMQ支持的传输协议连接到ActiveMQ接受消息并做处理。
图-1 ActiveMQ架构
生产者(Producer):消息的生产者。
消费者(Consumer):消息的消费者。
队列(Queue):用于存储还未被消费者消费的消息,点对点模型以Queue作为通信载体。
主题(Topic):用于存储还未被消费者消费的消息,发布订阅模式使用Topic作为通信载体。
传输协议:ActiveMQ允许客户端使用多种协议来连接,包括:TCP、AMQP、STOMP、MQTT、WS。
JMS:Java Message Service,JMS是一个java平台中关于面向消息中间件的API。
PTP:The point-to-point,可以同步或者异步的发送和接受消息,每个消息仅被发送一次,且消费一次。
pub/sub:publish/subscribe发布订阅,消息生产者将消息发到topic中,消息消费者从topic读取,与PTP不同的是,消息可以被重复消费。
集群模式:分为单节点和主从两种。
单节点:ActiveMQ只有一个实例,单独运行。
主从:三个ActiveMQ组成ActiveMQ主从模式,实现高可用的架构。
集群健康状态:分为健康和不健康两种。
健康:集群中组件运行正常时,对应集群将处于健康状态。
不健康:集群中组件运行状态异常时,对应集群将处于不健康状态。
消息中间件ActiveMQ适用于以下场景:
应用解耦:消息中间件ActiveMQ可以插入应用中间,为两边应用提供接口,实现应用通过消息中间件进行通信。
异步处理:消息中间件ActiveMQ提供异步处理机制,允许应用把一些消息放入消息中间件中,并不立即处理它,在之后需要的时候再处理。
流量削峰:使用消息中间件ActiveMQ能够使关键组件支撑突发访问压力,不会因为突发的超负荷请求而完全崩溃。