当前位置: 首页 > news >正文

MQ中间件概念一览

一、概述

1. 大多应用中,可通过消息服务中间件来提升系统异步通信、扩展解耦能力

2. 消息服务中两个重要概念:

        消息代理(message broker)和目的地(destination)

当消息发送者发送消息以后,将由消息代理接管,消息代理保证消息传递到指定目的地。

3. 消息队列主要有两种形式的目的地

        1. 队列(queue):点对点消息通信(point-to-point)

        2. 主题(topic):发布(publish)/订阅(subscribe)消息通信

4. 点对点式:

• 消息发送者发送消息,消息代理将其放入一个队列中,消息接收者从队列中获 取消息内容,消息读取后被移出队列

• 消息只有唯一的发送者和接受者,但并不是说只能有一个接收者

5. 发布订阅式:

• 发送者(发布者)发送消息到主题,多个接收者(订阅者)监听(订阅)这个 主题,那么就会在消息到达时同时收到消息

6. JMS(Java Message Service)JAVA消息服务:

• 基于JVM消息代理的规范。ActiveMQ、HornetMQ是JMS实现

7. AMQP(Advanced Message Queuing Protocol)

• 高级消息队列协议,也是一个消息代理的规范,兼容JMS • RabbitMQ是AMQP的实现

 

8. Spring支持

• spring-jms提供了对JMS的支持

• spring-rabbit提供了对AMQP的支持

• 需要ConnectionFactory的实现来连接消息代理

• 提供JmsTemplate、RabbitTemplate来发送消息

• @JmsListener(JMS)、@RabbitListener(AMQP)注解在方法上监听消息 代理发布的消息

• @EnableJms、@EnableRabbit开启支持

9. Spring Boot自动配置

• JmsAutoConfiguration

• RabbitAutoConfiguration

 10、市面的MQ产品

• ActiveMQ、RabbitMQ、RocketMQ、Kafka

二、RabbitMQ概念 

RabbitMQ简介:

RabbitMQ是一个由erlang开发的AMQP(Advanved Message Queue Protocol)的开源实现。

核心概念

Message

消息,消息是不具名的,它由消息头和消息体组成。消息体是不透明的,而消息头则由一系列的可选属性组成, 这些属性包括routing-key(路由键)、priority(相对于其他消息的优先权)、delivery-mode(指出该消息可 能需要持久性存储)等。

Publisher

消息的生产者,也是一个向交换器发布消息的客户端应用程序。

Exchange

交换器,用来接收生产者发送的消息并将这些消息路由给服务器中的队列。

Exchange有4种类型:direct(默认),fanout, topic, 和headers,不同类型的Exchange转发消息的策略有所区别

Queue

消息队列,用来保存消息直到发送给消费者。它是消息的容器,也是消息的终点。一个消息可投入一个或多个队列。消息一直 在队列里面,等待消费者连接到这个队列将其取走。

Binding

绑定,用于消息队列和交换器之间的关联。一个绑定就是基于路由键将交换器和消息队列连接起来的路由规则,所以可以将交 换器理解成一个由绑定构成的路由表。

Exchange 和Queue的绑定可以是多对多的关系。

Connection

网络连接,比如一个TCP连接。

Channel

信道,多路复用连接中的一条独立的双向数据流通道。信道是建立在真实的TCP连接内的虚拟连接,AMQP 命令都是通过信道 发出去的,不管是发布消息、订阅队列还是接收消息,这些动作都是通过信道完成。因为对于操作系统来说建立和销毁 TCP 都 是非常昂贵的开销,所以引入了信道的概念,以复用一条 TCP 连接。

 

相关文章:

MQ中间件概念一览

一、概述 1. 大多应用中,可通过消息服务中间件来提升系统异步通信、扩展解耦能力 2. 消息服务中两个重要概念: 消息代理(message broker)和目的地(destination) 当消息发送者发送消息以后,将由…...

爱尔兰公司注册要求及条件

简介: 爱尔兰是一个高度发达的资本主义国家,也是欧盟、经济合作与发展组织、世界贸易组织和联合国的成员国。并且也是世界经济发展速度快的国家之一,因经济发达赢得了“欧洲小虎”的美誉。总体来看,爱经济发展势头趋稳&#xff0c…...

Java中如何打印对象内存地址?

先看一个简单的程序,一般我们打印对象,大部分是下面的情况,可能会重写下toString()方法,这个另说 Frolan frolan new Frolan(); System.out.println(frolan);// 输出结果 com.test.admin.entity.Frolan2b80d80f这个结果其实是调…...

CF1707E Replace

题目描述 给定一个长为 nnn 的序列 a1,…,ana_1,\ldots,a_na1​,…,an​,其中对于任意的 iii 满足 1≤ai≤n1 \leq a_i \leq n1≤ai​≤n。 定义一个二元组函数如下: f((l,r))(min⁡{al,…,ar},max⁡{al,…,ar})(l≤r)f((l,r))(\min\{a_l,\ldots,a_r\}…...

【Hello Linux】Linux工具介绍 (make/makefile git)

作者:小萌新 专栏:Linux 作者简介:大二学生 希望能和大家一起进步! 本篇博客简介:介绍Linux的常用工具make/makefile git Linux项目自动化构建工具 – make/Makefile 背景 会不会写Makefile 从侧面说明了一个人是否具…...

享元模式flyweight

享元模式属于结构型模式。享元模式是池技术的重要实现方式,它可以减少重复对象的创建,使用缓存来共享对象,从而降低内存的使用。细粒度的对象其状态可以分为两种:内部状态和外部状态。应用场景系统存在大量相似或相同的对象。外部…...

Pulsar

一、简介Apache Pulsar是Apache软件基金会顶级项目,是下一代云原生分布式消息流平台,集消息、存储、轻量化函数式计算为一体,采用计算与存储分离架构设计,支持多租户、持久化存储、多机房跨区域数据复制,具有强一致性、…...

项目介绍 + 定长内存池设计及实现

你好,我是安然无虞。 文章目录项目介绍当前项目做的是什么?技术栈内存池是什么?池化技术内存池内存池主要解决的问题malloc定长内存池学习目的定长内存池设计项目介绍 当前项目做的是什么? 这个项目是实现一个高并发的内存池, 它的原型是 Google 的一个开源项…...

Linux--线程安全的单例模式--自旋锁--0211

1. 线程安全的单例模式 1.1 什么是单例模式 某些类, 只应该具有一个对象(实例), 就称之为单例. 1.1.1 懒汉方式实现单例模式 以上篇博文的线程池为例 Liunx--线程池的实现--0208 09_Gosolo!的博客-CSDN博客 实现懒汉模式首先要先将构造函数私有化,…...

图文解说S参数(进阶篇)

S参数是RF工程师/SI工程师必须掌握的内容,业界已有多位大师写过关于S参数的文章,即便如此,在相关领域打滚多年的人, 可能还是会被一些问题困扰着。你懂S参数吗? 图文解说S参数(基础篇) 请继续往下看...台湾…...

Sentinel源码阅读

基础介绍 Sentinel 的使用可以分为两个部分: 核心库(Java 客户端):不依赖任何框架/库,能够运行于 Java 8 及以上的版本的运行时环境,同时对 Dubbo / Spring Cloud 等框架也有较好的支持(见 主流框架适配&…...

2023年浙江食品安全管理员考试真题题库及答案

百分百题库提供食品安全管理员考试试题、食品安全管理员考试预测题、食品安全管理员考试真题、食品安全管理员证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 一、判断题 7.(重点)《餐饮服务食品安全…...

Webstorm 代码没有提示,uniapp 标签报错

问题 项目是用脚手架创建的: vue create -p dcloudio/uni-preset-vue my-project 打开之后,添加view标签警告报错的。代码也没有提示,按官方说法:CLI 工程默认带了 uni-app 语法提示和 5App 语法提示。 但是我这里就是有问题。…...

MySQL-Innodb引擎事务原理

文章目录1.事务介绍2 事务特性3. 事务的实现原理4 redo log 保证持久性5 undo log 保证原子性6 MVCC 概念6.1 隐藏字段6.2 版本链6.3 ReadView6.3.1readview 版本控制规则7 隔离性 实现7.2 隔离性- REPEATABLE READ 可重复读下8 一致性1.事务介绍 事务是一组操作的集合&#xf…...

Linux操作系统学习(了解环境变量)

文章目录环境变量初识除了上述介绍的PATH&#xff0c;还有一些常见的环境变量如&#xff1a;查看环境变量方法 &#xff1a;环境变量的基本概念&#xff1a;本地变量&#xff1a;环境变量初识 环境变量解释起来比较抽象&#xff0c;先看示例&#xff1a; #include <stdio.…...

数据分析思维(六)|循环/闭环思维

循环/闭环思维 1、概念 在很多的分析场景下&#xff0c;我们需要按照一套流程反复分析&#xff0c;而不是进行一次性的分析&#xff0c;也就是说这套流程的结果会成为该流程的新一次输入&#xff0c;从而形成一个闭环&#xff0c;此时的分析思维我们称之为循环/闭环思维。 常…...

C++:类和对象(下)

文章目录1 再谈构造函数1.1 构造函数体赋值1.2 初始化列表1.3 explicit关键字2 static成员2.1 概念2.2 特性3 友元3.1 友元函数&#xff08;流插入&#xff08;<<&#xff09;及流提取&#xff08;>>&#xff09;运算符重载&#xff09;3.2 友元类4 内部类5 匿名对…...

ASP.NET Core MVC 项目 AOP之IResultFilter和IAsyncResultFilter

目录 一:说明 二:IActionFilter同步 三:IAsyncActionFilter异步 一:说明 IResultFilter同步过滤器与IAsyncResultFilter异步过滤器常常被用作于渲染视图或处理结果。 IResultFilter同步过滤器执行顺序: 1:执行控制器中的构造函数,实例化控制器 2:执行具体的Acti…...

jstack排查cpu占用高[复习]

这样就可以看到占用CPU高的代码位置。 总结&#xff1a;就是先查到占用高的应用和具体的线程&#xff0c;然后根据线程到堆积信息查找即可。 不过堆栈信息非十进制&#xff0c;需提前把线程号转为十六进制。 这样就可以看到占用CPU高的代码位置。 总结&#xff1a;就是先查到…...

网络安全-Pyhton环境搭建

网络安全-Pyhton环境搭建 https://www.kali.org/get-kali/#kali-installer-images—kali官网下载地址 python这个东东呢 是目前来说最简单&#xff0c;方便的开源的脚本语言 广泛用于Web开发&#xff0c;AI&#xff0c;网站开发等领域 python要装2和3 为什么要安装两个版本…...

别再用示波器死磕了!用Python+RC积分电路,5分钟搞定充放电曲线模拟与可视化

别再用示波器死磕了&#xff01;用PythonRC积分电路&#xff0c;5分钟搞定充放电曲线模拟与可视化 在电子工程实践中&#xff0c;RC积分电路的充放电特性分析是基础中的基础。传统方法往往依赖示波器观测&#xff0c;不仅耗时耗力&#xff0c;还受限于硬件条件。今天&#xff…...

HTTP自适应流媒体技术解析:从HLS/DASH原理到实战部署

1. 流媒体技术演进&#xff1a;从“下载后播放”到“自适应缓冲”每天我们打开手机或电脑&#xff0c;点开一个视频&#xff0c;看到那个旋转的加载圈&#xff0c;心里总会咯噔一下。这个被称为“缓冲”的现象&#xff0c;早已成为数字生活的一部分。但你是否想过&#xff0c;为…...

3个步骤掌握Sketch MeaXure:设计师与开发者的终极协作桥梁

3个步骤掌握Sketch MeaXure&#xff1a;设计师与开发者的终极协作桥梁 【免费下载链接】sketch-meaxure 项目地址: https://gitcode.com/gh_mirrors/sk/sketch-meaxure 你是否厌倦了在Sketch中手动测量每个元素、反复截图标注的日子&#xff1f;Sketch MeaXure正是为解…...

开源技能学习资源聚合项目SkillPort:构建个人与团队知识库的实践指南

1. 项目概述&#xff1a;一个技能提升的“私人图书馆”最近在整理自己的学习资料库时&#xff0c;发现了一个挺有意思的项目&#xff0c;叫gotalab/skillport。乍一看这个名字&#xff0c;可能会联想到某个商业学习平台&#xff0c;但实际上&#xff0c;这是一个由开发者社区构…...

智能体网格(Agent Mesh)架构解析:构建大规模异构智能体协同网络

1. 项目概述与核心价值最近在开源社区里&#xff0c;一个名为sampleXbro/agentsmesh的项目引起了我的注意。乍一看这个标题&#xff0c;你可能会觉得它有些神秘&#xff0c;甚至有点“缝合怪”的味道——sampleX、bro、agents、mesh&#xff0c;这些词组合在一起&#xff0c;到…...

CES 2016行业转向:从酷炫到实用,安全与服务成核心

1. 从“酷炫”到“实用”&#xff1a;CES 2016的行业转向解析每年一月的拉斯维加斯&#xff0c;对于科技行业而言&#xff0c;都像是一场盛大的朝圣。CES&#xff08;国际消费电子展&#xff09;不仅是新品发布的舞台&#xff0c;更是行业风向的晴雨表。2016年的CES&#xff0c…...

芯片低功耗设计:从动态/静态功耗原理到DVFS与电源门控实战

1. 从“功耗”到“能效”&#xff1a;一个芯片工程师的视角在半导体行业摸爬滚打了十几年&#xff0c;我越来越深刻地体会到&#xff0c;芯片设计早已不是单纯追求性能的“百米冲刺”&#xff0c;而是一场关于“能效”的马拉松。性能决定了你的芯片能跑多快&#xff0c;而功耗则…...

一键完整网页截图终极指南:告别滚动拼接的烦恼

一键完整网页截图终极指南&#xff1a;告别滚动拼接的烦恼 【免费下载链接】full-page-screen-capture-chrome-extension One-click full page screen captures in Google Chrome 项目地址: https://gitcode.com/gh_mirrors/fu/full-page-screen-capture-chrome-extension …...

Go语言CLI工具服务化:基于JSON-RPC的进程间通信与自动化集成

1. 项目概述与核心价值最近在折腾一些自动化流程和跨平台脚本时&#xff0c;遇到了一个挺有意思的需求&#xff1a;如何让一个用Go语言写的、功能强大的命令行工具&#xff0c;能够被其他语言&#xff08;比如Python、Node.js&#xff09;或者更上层的应用&#xff08;比如Web界…...

给Windows桌面注入macOS灵魂:鼠标指针美化的艺术之旅

给Windows桌面注入macOS灵魂&#xff1a;鼠标指针美化的艺术之旅 【免费下载链接】macOS-cursors-for-Windows Tested in Windows 10 & 11, 4K (125%, 150%, 200%). With 2 versions, 2 types and 3 different sizes! 项目地址: https://gitcode.com/gh_mirrors/ma/macOS…...