Jolestar 2018-04-12
本文从以下方面简单介绍一下ActiveMQ
一、消息中间件背景
二、简述JMS规范
三、ActiveMQ简介
一、消息中间件背景
当前如RMI,RPC中间件技术应用到各个领域,但面对复杂度越来越高的分布式系统,上述中间件有一下局限性:
(1)同步通信:客户端发出请求之后必须等待服务端处理完毕返回结果后才能继续执行;
(2)客户端与服务端生命周期紧密耦合:客户端进程与服务端进程必须正常运行;如果由于服务端对象崩溃或者网络故障导致客户端请求不可达,则客户端会接受到异常消息;
(3)点对点通信:客户的一次调用只能发送给单一的目标对象;;
面向消息的中间件(Message Oriented Middleware,MOM)较好的解决了上述问题。消息的发送者将消息发送到消息服务器,消息服务器将消息存储到若干队列中,在合适的时候再将消息转发给接收者。
①该模式下,发送和接收是异步的,发送者无需等待;
②发送者与接收者声明周期不一定相同:发送消息的时候接受者不一定运行,接收消息时发送者也不一定运行;
③一对多通信:对于一个消息可以有多个接收者;
二、简述JMS规范
1、Java消息服务(JMS)定义了Java中访问消息中间件的接口。JMS只是接口(规范),并没有实现,实现JMS规范接口的消息中间件成为JMS Provider,已经存在的消息中间件如Apache的ActiceMQ,阿里的RocketMQ,IBM的MQSeries,微软的MSMQ等,他们基本都遵守JMS规范。
2、JMS术语
Provider(Message Provrider):生产者
Consumer(Message Consumer):消费者
PTP(Point to point):点对点消息模型
Pub/Sub:Publish/Subscribe,即发布订阅消息模型
Queue:队列目标
Topic:主题目标
ConnectionFactory:连接工厂,JMS用它来创建连接
Connection:JMS客户端到JMS Provider的连接
Destination:消息目的地
Session:会话,一个发送或接受消息的线程
3、消息格式的定义
JMS定义了5中不同的消息正文格式,以及调用消息的类型,允许你发送或接收一些不同形式的数据,提供现有消息格式的一些级别的兼容性。
(1)StreamMessage:java原始的数据流
(2)MapMessage:名-值对
(3)TextMessage:一个字符串对象
(4)ObjectMessage:一个序列化的java对象
(5)BytesMessage:字节的数据流
三、ActiveMQ简介
ActiveMQ是Apache出品的流行的消息,能力较强的消息处理总线。
ActiveMQ是一个完全支持JMS1.1和J2EE1.4规范的JMS Provider实现。
如果想要有更强大的性能以及海量数据的处理能力,ActiveMQ需要不断升级版本,80%以上的业务我们使用ActiveMQ可以满足需求