(一)消息中间件、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. 可靠:
消息提供者可以保证一个消息传送一次且只传送一次
下一篇我们将介绍消息队列的两种消息模型
相关推荐
这个压缩包包含了一系列关于ActiveMQ的学习资源,包括API参考手册、笔记、整合教程以及深入的书籍,为理解和使用ActiveMQ提供了丰富的材料。 1. **ActiveMQ Core API.chm**: 这是ActiveMQ核心API的离线帮助文档,...
1. 消息中间件的基本概念: 消息中间件是软件系统之间通信的一种方式,它允许应用通过异步传递消息进行解耦。这有助于提高系统的可扩展性和可靠性,因为消息生产者和消费者之间无需同时在线。常见的消息中间件有JMS...
首先,对于"ActiveMQ开发实例-4",我们可能涉及到的是在已有系列教程的基础上更深入的应用或解决特定问题。这通常包括创建生产者和消费者,设置消息属性,处理事务,以及可能的故障恢复策略等。开发者需要理解...
这本书通常会深入介绍ActiveMQ的基本概念,如消息模型、生产者和消费者、消息队列与主题、持久化机制等。此外,书中可能会涵盖高级主题,如事务处理、优先级队列、消息选择器和网络连接,帮助读者掌握如何在实际项目...
通过这个视频系列,你不仅能够掌握ActiveMQ的基本操作,还能深入理解JMS规范,从而在实际项目中更有效地利用消息中间件进行解耦和异步通信。此外,了解ActiveMQ的性能调优和故障排查技巧也是提升系统稳定性的关键,...
1. **ActiveMQ基本概念**: - **Message Broker**:ActiveMQ作为一个Message Broker,负责接收、存储、转发消息,并确保消息的可靠传输。 - **JMS接口**:JMS是Java平台上的标准API,用于应用程序之间的异步通信,...
本套高级Java软件架构师实战培训视频教程是私塾在线推出的系列课程,旨在提升学员的Java编程技能和软件架构设计能力。课程覆盖了142至148讲,全面讲解了从基础架构到高级应用的诸多关键知识点,以下是部分核心内容的...
根据给定的信息,“蓝眼睛ServiceMix教程”主要围绕ServiceMix这一技术进行介绍,涉及其安装配置、基础概念以及如何在企业环境中应用等方面。下面将基于这些内容,详细展开相关知识点。 ### ServiceMix简介 ...
JMS基本概念** JMS的核心概念是消息和消息队列。消息是数据的一种传输形式,它可以包含各种类型的数据,并且可以在应用程序之间独立传输。消息队列则是存储和转发这些消息的实体,确保消息被正确地发送和接收,...
【狂神说全部笔记内容.zip】是一个包含了狂神说系列教程的笔记集合,主要涵盖了Java相关的技术领域。根据提供的文件列表,我们可以了解到这些笔记详细讲解了多个关键知识点,包括JVM(Java虚拟机)、Java并发编程...
**《JMS消息简明教程》** 提供了一个快速入门的指南,简化了JMS的基础知识,适合初学者快速了解JMS的基本概念和操作。它可能包括创建连接工厂、创建和发送消息的示例代码,以及如何测试和调试JMS应用程序的方法。 ...
【描述】:“09-MQ.zip”没有提供具体的描述信息,但可以推测它可能包含了一系列关于消息队列技术的文档、代码示例或教程材料。这些内容可能涵盖了MQ的基本概念、工作原理、常见使用场景、如何实现以及如何选择适合...
- **基本概念**:解释 Apache Camel 的核心概念,包括路由、处理器、端点等。 - **开发第一个应用程序**:指导用户通过一个简单的示例来开发他们的第一个 Apache Camel 应用程序。 - **配置和管理**:提供关于如何...
【基于Jboss的JMS编程】是关于Java消息服务(JMS)在Jboss应用服务器上的实现和配置的教程,适合初学者理解JMS的基本概念和应用。JMS是一种标准API,用于在分布式环境中发送、接收和管理消息,提供可靠的数据传输。 ...
2. **补偿事务(Saga)**:Saga是一种长事务的解决方案,它将一个长事务拆分成一系列短事务,每个短事务称为一个子Saga。如果某个子Saga失败,可以通过执行逆向操作(补偿操作)来恢复状态。 3. **分布式事务协调器...
从提供的文件名来看,"入门.pdf"可能是微服务编程的入门教程,涵盖了基本概念、最佳实践和技术选型等内容。而"gan.rar"可能是关于生成对抗网络(GANs)的相关资料,虽然与微服务编程直接关联不大,但GANs是深度学习...
通过这门课程,学习者将全面了解SpringBoot的基本概念和实战技巧,同时掌握Mybatis、Redis、Elasticsearch等关键组件的使用,理解消息队列在互联网架构中的作用,以及如何利用WebFlux实现高效的Web服务。教程中的...
1. **分布式系统原理**:了解分布式系统的基本概念,如并行计算、数据分布、一致性模型(如CAP理论)以及分布式系统的设计原则,这些是构建分布式Java应用的基础。 2. **网络通信**:Java应用在分布式环境中通常...
Spring Integration允许开发人员通过提供一系列可配置的组件来实现异步通信和消息驱动的架构。它简化了与外部系统的交互,如文件系统、数据库、Web服务、邮件服务器等。Spring Integration基于Enterprise ...
"骆驼样本"通常指的是Apache Camel项目中的...这不仅包括理解Camel的基本概念,还能提高你在面对各种技术接口和数据格式时的处理能力。对于Java开发者来说,熟悉Apache Camel无疑能增强其在企业级应用开发中的竞争力。