一、ActiveMQ介绍

ActiveMQ介绍

  • 一、JMS
    • 1.jms介绍
    • 2.jms消息传递模式
    • 3.jms编码总体架构
  • 二、消息中间件
  • 三、ActiveMQ介绍
    • 1.引入的原因
      • 1.1 原因
      • 1.2 遇到的问题
      • 1.3 解决思路
    • 2.定义
    • 3.特点
      • 3.1 异步处理
      • 3.2 应用系统之间解耦
      • 3.3 实际-整体架构
    • 4.作用

一、JMS

1.jms介绍

  • jms是java消息服务接口规范,主要包含四大元素:生产者、消费者、消息、消息服务。
    • 生产者:创建消息,并把消息发动到消息服务;
    • 消费者:从消息服务接收消息;
    • 消息服务:即MQ消息服务(broker),而生产者与消费者相对其均为客服端;
    • 消息:整个消息服务的传输对象,消息包含消息头、消息属性、消息体;

常用消息头属性:JMSDestination(消息目的地,如果生产者指定了目的地,在发送时会改为生产者绑定的目的地)、JMSDeliveryMode(是持久还是非持久)、JMSExpiration(过期时间,默认永久)、JMSPriority(优先级,0-9,数值越大优先级越高,默认为4)、JMSMessageId(唯一的消息ID);
消息属性:可视为消息头属性的扩展,通过setXxxProperty(k,v)设置;
消息体:封装消息的具体数据,发送与接收的消息体类型必须一致,消息体类型总共有5种,TextMessage、Mapmessage、BytesMessage、StreamMessage、ObjectMessage;

2.jms消息传递模式

  • jms消息传递模式有如下两种,
    • 点对点消息传递模式(P2P):消息发送到一个特殊队列(queue), 消费者从队列获取消息,一条消息只能被只能被一个消费者消费;
    • 发布/订阅消息传递模式(publish-subscribe):消息被发送到一个主题上(topic),所有订阅了该主题的消费者,都能接收到消息。

3.jms编码总体架构

  • JMS应用程序由如下基本模块组成
    • 1.连接工厂对象,创建消息客户端(生产者、消费者)与消息服务端的连接(connection);
    • 2.连接对象,创建回话对象(session);
    • 3.会话对象,创建生产者对象(producer)、消费者对象(consumer)以及消息对象(message);
    • 4.目的地(queue/topic),点对点模式下目的地是队列(queue),发布/订阅模式下目的地是主题(topic),生产者把消息发送到目的地,消费者从目的地接收消息

在这里插入图片描述

二、消息中间件

  • 消息中间件是实现了jms规范的落地产品,目前市场上主流的消息中间件有 ActiveMQ、Kafka、RocketMQ、RabbitMQ等。企业开发中使用消息中间件的主要目的是 解决耦合调用、抵御洪峰流量(削峰)等。 以下主要讲解ActiveMQ的使用。

三、ActiveMQ介绍

  • 官网地址

1.引入的原因

1.1 原因

  • 微服务架构后,链式调用是我们在写程序时候的一般流程,为了完成一个整体功能会将其拆分成多个函数(或子模块),比如模块A调用模块B,模块B调用模块C,模块C调用模块D。但在大型分布式应用中,系统间的RPC交互繁杂,一个功能背后要调用上百个接口并非不可能,从单机架构过渡到分布式微服务架构的通例

1.2 遇到的问题

  • 系统之间接口耦合严重
    • 举个例子:如果系统A要发送数据给系统B和系统C,发送给每个系统的数据可能有差异,因此系统A对要发送给每个系统的数据进行了组装,然后逐一发送;
    • 当代码上线后又新增了一个需求:把数据也发送给D,新上了一个D系统也要接受A系统的数据,此时就需要修改A系统,让他感知到D系统的存在,同时把数据处理好再给D。在这个过程你会看到,每接入一个下游系统,都要对系统A进行代码改造,开发联调的效率很低。
  • 面对大流量并发时,容易被冲垮
    • 每个接口模块的吞吐能力是有限的,这个上限能力如果是堤坝,当大流量(洪水)来临时,容易被冲垮。
    • 举个例子秒杀业务:上游系统发起下单购买操作,我就是下单一个操作下游系统完成秒杀业务逻辑(读取订单,库存检查,库存冻结,余额检查,余额冻结,订单生产,余额扣减,库存减少,生成流水,余额解冻,库存解冻)
  • 等待同步存在性能问题
    • RPC接口上基本都是同步调用,整体的服务性能遵循“木桶理论”,即整体系统的耗时取决于链路中最慢的那个接口。比如A调用B/C/D都是50ms,但此时B又调用了B1,花费2000ms,那么直接就拖累了整个服务性能。

1.3 解决思路

  • 解耦:要做到系统解耦,当新的模块接进来时,可以做到代码改动最小;
  • 削峰:设置流量缓冲池,可以让后端系统按照自身吞吐能力进行消费,不被冲垮;
  • 异步:强弱依赖梳理能将非关键调用链路的操作异步化并提升整体系统的吞吐能力;

2.定义

  • 面向消息的中间件(message-oriented middleware)MOM能够很好的解决以上问题,是指利用高效可靠的消息传递机制与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。
  • 通过提供消息传递和消息排队模型在分布式环境下提供应用解耦,弹性伸缩,冗余存储、流量削峰,异步通信,数据同步等功能。
    • 发送者把消息发送给消息服务器,消息服务器将消息存放在若干队列/主题topic中,在合适的时候,消息服务器回将消息转发给接受者。在这个过程中,发送和接收是异步的,也就是发送无需等待,而且发送者和接受者的生命周期也没有必然的关系;
    • 尤其在发布pub/订阅sub模式下,也可以完成一对多的通信,即让一个消息有多个接受者。
  • ActiveMQ 是 Apache 推出的一款 开源免费的,完全支持 JMS1.1 和 J2EE 1.4 规范的 JMS Provider 实现的消息中间件(Message Oriented Middleware,MOM)

3.特点

3.1 异步处理

  • 消息发送者可以发送一个消息而无须等待响应。消息发送者将消息发送到一条虚拟的通道(主题或者队列)上;
  • 消息接收者则订阅或者监听该爱通道。一条消息可能最终转发给一个或者多个消息接收者,这些消息接收者都无需对消息发送者做出同步回应。整个过程都是异步的。
    在这里插入图片描述
  • 这样的一种通信方式,就是所谓的“异步”通信方式,对于系统A来说,只需要把消息发送给MQ,然后系统B就会异步的去进行处理了,系统A不需要“同步”的等待系统B处理完成。
    • 这样的好处是 解耦

3.2 应用系统之间解耦

  • 发送者和接收者不必了解对方,只需要确认消息
  • 发送者和接收者不必同时在线

3.3 实际-整体架构

在这里插入图片描述

4.作用

  • 解耦
  • 削峰
  • 异步

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/257778.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【微服务】skywalking自定义告警规则使用详解

目录 一、前言 二、SkyWalking告警功能介绍 2.1 SkyWalking告警是什么 2.2 为什么需要SkyWalking告警功能 2.2.1 及时发现系统异常 2.2.2 保障和提升系统稳定性 2.2.3 避免数据丢失 2.2.4 提高故障处理效率 三、 SkyWalking告警规则 3.1 SkyWalking告警规则配置 3.2 …

构建智慧交通平台:架构设计与实现

随着城市交通的不断发展和智能化技术的迅速进步,智慧交通平台作为提升城市交通管理效率和水平的重要手段备受关注。本文将探讨如何设计和实现智慧交通平台的系统架构,以应对日益增长的城市交通需求,并提高交通管理的智能化水平。 ### 1. 智慧…

高级数据结构与算法 | 布谷鸟过滤器(Cuckoo Filter):原理、实现、LSM Tree 优化

文章目录 Cuckoo Filter基本介绍布隆过滤器局限变体 布谷鸟哈希布谷鸟过滤器 实现数据结构优化项Victim Cache备用位置计算半排序桶 插入查找删除 应用场景:LSM 优化 Cuckoo Filter 基本介绍 如果对布隆过滤器不太了解,可以看看往期博客:海量…

Netty应用(一) 之 NIO概念 基本编程

目录 第一章 概念引入 1.分布式概念引入 第二章 Netty基础 - NIO 1.引言 1.1 什么是Netty? 1.2 为什么要学习Netty? 2.NIO编程 2.1 传统网络通信中开发方式及问题(BIO) 2.1.1 多线程版网络编程 2.1.2 线程池版的网络编程…

操作 Docker 存储卷的常用指令汇总

1. 什么是存储卷? 存储卷就是将宿主机的本地文件系统中存在的某个目录直接与容器内部的文件系统上的某一目录建立绑定关系。使得可以在宿主机和容器内共享数据库内容,让容器直接访问宿主机中的内容,也可以宿主机向容器写入内容,容…

元宇宙专题:元宇宙概念娱乐应用场景案例研究报告 - 体验驱动篇

今天分享的是元宇宙系列深度研究报告:《元宇宙专题:元宇宙概念娱乐应用场景案例研究报告 - 体验驱动篇》。 (报告出品方:艾瑞咨询) 报告共计:51页 避免刻舟求剑地探索元宇宙概念产品 对于任何一个宏大而…

建筑工程如何找答案? #职场发展#笔记#职场发展

这些软件以其强大的搜索引擎和智能化的算法,为广大大学生提供了便捷、高效的解题方式。下面,让我们一起来了解几款备受大学生欢迎的搜题软件吧! 1.易解题 这是一个网站 是我在百度搜题,经常会出现的一个网站,它里面…

Ubuntu Desktop - Disks

Ubuntu Desktop - Disks 1. Search your computer -> DisksReferences 1. Search your computer -> Disks ​ References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

Spring Boot 笔记 021 项目部署

1.1 引入坐标,并双击package打包成jar包 1.2 在服务器上运行jar包 1.3 使用postman测试 2.1 运行配置 2.1.1 命令更改端口 java -jar big-event-1.0-SNAPSHOT.jar --server.port7777 2.1.2 环境变量更新(略) 2.1.3 外部配置文件&#xff0c…

H12-821_48

48.下面是台路由器输出的BGP信息,关于这段信息描述措误的是 A.路由器的Router ID是1.1.1.9 B.display bgp network命令来显示BGP通过network ( BGP)的通告的路由信息 C.该路由器所在AS号是10 D.该路由器通过import-route命今引入了4.4.4.0/24的网段 答案:D 注释&am…

【剪辑必备】今天我教你如何手动去下载苹果官网4K预告片 完全免费

🚀 个人主页 极客小俊 ✍🏻 作者简介:web开发者、设计师、技术分享博主 🐋 希望大家多多支持一下, 我们一起学习和进步!😄 🏅 如果文章对你有帮助的话,欢迎评论 💬点赞&a…

thinkphp+vue企业产品展示网站f7enu

本文首先介绍了企业产品展示网站管理技术的发展背景与发展现状,然后遵循软件常规开发流程,首先针对系统选取适用的语言和开发平台,根据需求分析制定模块并设计数据库结构,再根据系统总体功能模块的设计绘制系统的功能模块图&#…

【leetcode热题100】恢复二叉搜索树

给你二叉搜索树的根节点 root ,该树中的 恰好 两个节点的值被错误地交换。请在不改变其结构的情况下,恢复这棵树 。 示例 1: 输入:root [1,3,null,null,2] 输出:[3,1,null,null,2] 解释:3 不能是 1 的左孩…

【C深度解剖】取模与取余

简介:本系列博客为C深度解剖系列内容,以某个点为中心进行相关详细拓展 适宜人群:已大体了解C语法同学 作者留言:本博客相关内容如需转载请注明出处,本人学疏才浅,难免存在些许错误,望留言指正 作…

HiveSQL——用户行为路径分析

注:参考文档: SQL之用户行为路径分析--HQL面试题46【拼多多面试题】_路径分析 sql-CSDN博客文章浏览阅读2k次,点赞6次,收藏19次。目录0 问题描述1 数据分析2 小结0 问题描述已知用户行为表 tracking_log, 大概字段有&…

ELAdmin 发送邮件

邮箱配置 ELAdmin目录中选择系统工具->邮件工具。 发件人邮箱:发送者的邮箱地址发件用户名:一般都是发件人邮箱前面的部分,也可以任意写邮箱密码:如果是 qq 邮箱或者腾讯企业邮箱,需要使用授权码。SMTP地址&…

CSRNET图像修复,DNN

CSRNET图像修复 CSRNET图像修复,只需要OPENCV的DNN

【汇编】简单的linux汇编语言程序

一、Linux系统汇编语言 Linux系统上的汇编语言可以使用不同的语法风格,主要包括Intel语法和AT&T语法。这两种语法有各自的特点和风格区别,尽管它们表示的底层机器指令相同。下面分别对两种语法进行简要说明: Intel语法 Intel语法是由I…

C语言------一种思路解决实际问题

1.比赛名次问题 ABCDE参加比赛&#xff0c;那么每个人的名次都有5种可能&#xff0c;即1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5&#xff1b; int main() {int a 0;int b 0;int c 0;int d 0;int e 0;for (a 1; a < 5; a){for (b 1; b < 5; b){for…

Panalog 日志审计系统 libres_syn_delete.php 前台RCE漏洞复现

0x01 产品简介 Panalog是一款日志审计系统,方便用户统一集中监控、管理在网的海量设备。 0x02 漏洞概述 Panalog日志审计系统 libres_syn_delete.php接口处存在远程命令执行漏洞,攻击者可执行任意命令,接管服务器权限。 0x03 影响范围 version <= MARS r10p1Free 0…