讨论JMS与ActiveMQ的内部逻辑
2023-04-13 16:34:51
两个系统或分布式系统之间的信息通信是我们开发中常见的场景。例如,系统A应该向系统B发送信息。我们应该如何处理这个问题?
1999年,原SUN公司领导提出了面向新闻的中间件服务JMS规范(标准);
JMS是Java消息服务(Java Message 简称Service),Java EE 标准/规范之一。
该规范(标准)指出,消息的发送应异步且非阻塞。
也就是说,发送消息的发送者在发送消息后直接返回,不需要等待接收者收到消息,发送者和接收者可以说不相互影响。
因此,该规范(标准)可以减少或消除系统瓶颈,去除系统之间的耦合,提高系统的整体可伸缩性和灵活性。
JMS是Java EE中定义的一组标准API不是消息服务系统,而是消息传输服务的抽象,也就是说,它定义了消息传输的接口,没有具体实现。
随着Java的发展,JMS规范经历了多年的发展 EE已经升级了好几次,版本从1.0到最新的2.1,分别是:
Java EE 8 --> Java Message Service API 2.1
Java EE 7 --> Java Message Service API 2.0
Java EE 6 --> Java Message Service API 1.1
Java EE 5 --> Java Message Service API 1.1
J2EE1.4 --> Java Message Service API 1.1
我们知道JMS只是新闻服务的一组规范和接口,没有具体实现,ActiveMQ是JMS规范的具体实现;
ActiveMQ是Apache下的一个项目,采用Java语言开发;
ActiveMQ 实现JMS规范的开源消息服务器,是一款非常流行的官方网站: http://activemq.apache.org/
ActiveMQ和JMS之间的关系,我们知道JMS只定义了一组相关的信息传输规范和标准,并没有真正实现,也就是说,JMS只定义了一组接口,就像JDBC抽象关系数据库访问、JPA抽象对象和关系数据库映射、JNDI抽象命名目录服务访问一样,JMS具体实现由不同的信息中间件制造商提供,比如Apache ActiveMQ是JMS规范的具体实现,Apache ActiveMQ是新闻服务系统,JMS不是。
可以参考更全面的信息 蛙课网 精心录制的视频课程:从入门到实践,新闻中间件ActiveMQ。