消息队列中间件是分布式系统中重要的组件,主要解决应用耦合、异步消息、流量削锋等问题,实现高性能、高可用、可伸缩和最终一致性架构,是大型分布式系统不可缺少的中间件。
目前在生产环境中使用较多的消息队列有 ActiveMQ、RabbitMQ、ZeroMQ、Kafka、MetaMQ、RocketMQ 等。
特性
异步性:将耗时的同步操作通过以发送消息的方式进行了异步化处理,减少了同步等待的时间。
松耦合:消息队列减少了服务之间的耦合性,不同的服务可以通过消息队列进行通信,而不用关心彼此的实现细节,只要定义好消息的格式就行。
分布式:通过对消费者的横向扩展,降低了消息队列阻塞的风险,以及单个消费者产生单点故障的可能性(当然消息队列本身也可以做成分布式集群)。
可靠性:消息队列一般会把接收到的消息存储到本地硬盘上(当消息被处理完之后,存储信息根据不同的消息队列实现,有可能将其删除),这样即使应用挂掉或者消息队列本身挂掉,消息也能够重新加载。
JMS 规范
JMS 即 Java 消息服务(Java Message Service)应用程序接口,是一个 Java 平台中关于面向消息中间件(MOM)的 API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java 消息服务是一个与具体平台无关的 API,绝大多数 MOM 提供商都对 JMS 提供支持。
JMS 的消息机制有 2 种模型,一种是 Point to Point,表现为队列的形式,发送的消息,只能被一个接收者取走;另一种是 Topic,可以被多个订阅者订阅,类似于群发。
ActiveMQ 是 JMS 的一个实现。
1 下载
官网地址:https://activemq.apache.org/download-archives
如下图所示,下载自己需要的版本进行安装:
2 安装
2.1 上传资源包
rz -E
2.2 解压
tar -zxvf apache-activemq-5.15.0-bin.tar.gz
3 启动
cd apache-activemq-5.15.0/bin/
./activemq start
4 验证
需开启8161和61616端口,8161是用于后台管理的端口,61616是Java连接使用。
后台登录地址http://ip:8161/admin,用户名密码都是admin。