activemq系列-概述
Activemq是一种消息中间件(MOM),基于JMS协议实现。介绍activemq就不得不介绍消息中间件和jms.
消息中间件是分布式系统十分常见的组件,提供了以比较灵活的方式集成不同应用程序的一种机制,应用程序彼此不直接通信,而是与作为中介的消息中间件进行通信。
消息中间件主要有两个作用,一是解耦,二是平峰,都是大型系统中经常会遇到的问题。
所谓解耦,就是要保持系统内各个应用的相对独立性。例如,用户登录的时候,可能有多个应用要触发各种各样的操作,推荐啊,发消息啊之类的,这些操作跟登录这个操作本身是无关的,如果全都放在登录模块去做,显然不合适,而且用户体验会非常差。这个时候就可以在登陆的时候发一条消息出来,其他系统监听这个消息,再进行各自业务的处理。
平峰,就是为了应对突然的流量增长,毕竟系统分配资源时不可能按最大需求去分配。如果短时间流量太大,可以让消息先留在消息中间件里,业务慢慢处理。
消息中间件一般有两种传递模式:点对点模式(P2P)和发布-订阅模式(Pub/Sub)。
点对点模式在JMS里叫做Queue, 主要特点有三个:
- 每个消息只有一个消费者(Consumer)
- 发送者和接收者之间在时间上没有依赖性,也就是说当发送者发送了消息之后,不管接收者有没有正在运行,它不会影响到消息被发送到队列;
- 接收者在成功接收消息之后需向队列发送应答(ack)信号。
发布-订阅模式则对应JMS里的Topic,与点对点模式向对应,有如下特点:
- 每条消息可以被多个消费这消费
- 发布者和订阅者之间有时间上的依赖性。针对某个主题(Topic)的订阅者,它必须创建一个订阅者之后,才能消费发布者的消息,而且为了消费消息,订阅者必须保持运行的状态;
JMS是Sun定义的一种标准消息传送API。JMS自身并不是一种消息传送系统;它是消息传送客户端和消息传送系统通信时所需接口和类的一个抽象。与JDBC, JNDI等类似。
JMS对消息结构、连接、会话、生产者、消费者等都做了规定。
Activemq就是对JMS1.1的一种具体实现。在后续文章里,我们会对activemq的安装使用以及各种特性进行全面的介绍。