欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ActiveMQ系列教程(一)基本概念

程序员文章站 2022-07-13 22:52:42
...

 

(一)消息中间件、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.消息中间件(消息队列)的应用场景

在项目中,将一些无需即时返回耗时的操作提取出来,进行了异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量。
应用场景举例:汽车制造企业,由库存系统开始发起相关异步消息传递

ActiveMQ系列教程(一)基本概念
            
    
    博客分类: Java消息队列框架 消息队列;JMS;ActiveMQ;高并发; 
 

附录:面试易问之

消息中间件(比如JMS)为什么经常被用在(适用于)高并发场景:

1. 松耦合通信模式

1)消息目的地(缓存)共享:一个组件向一个目的地发送消息,接收者可以从目的地获取这个消息。这个目的地是发送者和接收者共有的。
2)发送者和接收者要建立通信,并不要求两者同时可用。发送者不需要对接收者有任何了解,接收者也不需要知道发送者是谁在哪里,只需要知道从哪里(目的地)取什么样的消息(id和格式)
3)对比紧耦合的通讯模式,比如RMI ,调用者必须知道远程应用的方法
 

2.异步:

1)接收端不必在客户端发送消息时实时接收消息。
2)发送端发送消息后,可以继续完成其他任务,而不必等到接收端确认接收消息。
3)接收端可以在以后的某个时间接收这些消息
 

3. 可靠:

消息提供者可以保证一个消息传送一次且只传送一次
 
下一篇我们将介绍消息队列的两种消息模型
 
 
  • ActiveMQ系列教程(一)基本概念
            
    
    博客分类: Java消息队列框架 消息队列;JMS;ActiveMQ;高并发; 
  • 大小: 20 KB