(一)消息中间件、JMS和ActiveMQ概述
1. 消息中间件产生的背景
同步vs异步
在客户端与服务器进行通讯时,当客户端发起请求后,通常必须等待服务对象完成处理返回结果才能继续执行(同步)。这就造成了服务请求方与服务提供方之间生命周期的紧密紧密耦合,客户进程和服务对象进程都都必须同时正常运行,是为同步。从而造成性能低下,而且如果在过程中出现任何故障,很可能导致响应数据的丢失。
2.消息中间件
隔离于应用逻辑,专门处理消息的组件。面向消息的中间件(MOM)较好的解决了以上问题。发送者将消息发送给消息服务器,消息服务器将消息存放在若干队列中,在合适的时候再将消息转发给接收者,是为异步。
这种模式下,发送和接收无需同时在线的,发送者和接收者均无需等待; 二者的生命周期也不需相同。发送消息的时候接收者不一定运行,接收消息的时候发送者也不一定运行。并且,可以做到一对多通信: 即对于一个消息可以有多个接收者。
MQ简介:
MQ全称为Message Queue(消息队列), 是一种应用程序对应用程序的通信方法。应用程序通过写和读出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用(RPC)的技术。
3.什么是JMS?
Java消息服务(Java Message Service),是一个Java平台中关于面向消息中间件(MOM),也提供了相关API接口,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。注意,JMS是规范,是接口,可以有各种实现JMS规范的具体消息队列产品。
4. 什么是ActiveMQ
是Apache下的一个实现了 JMS 规范消息中间件(MOM)框架。旨在通过提供标准的产生、发送、接收和处理消息的API实现。JMS和ActiveMQ的关系类似于 JDBC 和具体数据库厂商实现库(比如mysql jdbc driver)的关系。类似的框架还有RabbitMQ、Kafka等。
JMS和MQ的关系:
JMS是一个用于提供消息服务的技术规范,它制定了在整个消息服务提供过程中的所有数据结构和交互流程。而MQ则是消息队列服务,是面向消息中间件(MOM)的最终实现,是真正的服务提供者;MQ的实现可以基于JMS,也可以基于其他规范或标准
5. 生产者与消费者
生产者--服务的提供方(消息的生产方)
消费者--服务的请求方(消息消费方)
6.消息中间件(消息队列)的应用场景
在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量。
应用场景举例:汽车制造企业,由库存系统开始发起相关异步消息传递
附录:面试易问之
消息中间件(比如JMS)为什么经常被用在(适用于)高并发场景:
1. 松耦合通信模式
1)消息目的地(缓存)共享:一个组件向一个目的地发送消息,接收者可以从目的地获取这个消息。这个目的地是发送者和接收者共有的。
2)发送者和接收者要建立通信,并不要求两者同时可用。发送者不需要对接收者有任何了解,接收者也不需要知道发送者是谁在哪里,只需要知道从哪里(目的地)取什么样的消息(id和格式)
3)对比紧耦合的通讯模式,比如RMI ,调用者必须知道远程应用的方法
2.异步:
1)接收端不必在客户端发送消息时实时接收消息。
2)发送端发送消息后,可以继续完成其他任务,而不必等到接收端确认接收消息。
3)接收端可以在以后的某个时间接收这些消息
3. 可靠:
消息提供者可以保证一个消息传送一次且只传送一次
下一篇我们将介绍消息队列的两种消息模型
相关推荐
Linux,centos系统安装Activemq教程,开机启动的设置
ActiveMQ集群实战教程
ActiveMQ视频教程
一、JMS基本概念 二、activemq介绍及安装 1、消息中间件简介 2、activemq 2.1、activemq简介 2.2、activemq下载 2.3、运行activemq服务 2.4、测试 2.5、监控 3、activemq特性 4、activemq使用场景 三、...
activemq培训教程,介绍activemq技术
ActiveMQ培训教程
ActiveMQ 教程和简要介绍,AMQ是apache公司开发的业界应用较为广泛的消息中间件
一头扎进 activemq 视频教程 java1234出品 一头扎进 activemq 视频教程 java1234出品
ActiveMQ视频教程,共9章节。学习后进步很大,优质视频教程
Apache ActiveMQ 教程 提供了相关的部署过程、开发方式等
ActiveMQ教程+配置[归纳].pdf
ActiveMQ服务的搭建以及简单应用,使用springjms+activemq实现。
MQ是消息中间件,是一种在分布式系统中应用程序借以传递消息的媒介,常用的有ActiveMQ,RabbitMQ,kafka。ActiveMQ是Apache下的开源项目,完全支持JMS1.1和J2EE1.4规范的JMS Provider实现。?特点:?1、支持多种语言...
一头扎进JMS之ActiveMQ,本人亲测,没问题。需要学习ActiveMQ的,这是比较好的入门资料,带源码。
activemq分布式集群视频教程,activemq分布式集群视频教程,activemq分布式集群视频教程,activemq分布式集群视频教程,activemq分布式集群视频教程
本文来自于csdn,文章简单的介绍了ActiveMQ的概念,下载,安装,启动及优缺点。ActiveMQ是由Apache出品的,一款最流行的,能力强劲的开源消息总线。ActiveMQ是一个完全支持JMS1.1和J2EE1.4规范的JMSProvider实现,它...
Apache ActiveMQ教程 JMS 整合Tomcat
springboot整合 activeMq 生产者 发送消息 包含队列模式点对点发送消息 以及 主题模式一对多发送消息 这是生产者的demo producer; 需要配合消费者的demo consumer 使用