1.Rabbitmq学习记录《本质介绍,协议AMQP分析》

1.RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现。

  RabbitMQ的优势-:

                  除了Qpid,RabbitMQ是唯一一个实现了AMQP标准的消息服务器;

                  可靠性,RabbitMQ的持久化支持,保证了消息的稳定性;

                  高并发,RabbitMQ使用了Erlang开发语言,Erlang是为电话交换机开发的语言,天生自带高并发光环,和高可用特性;

                  集群部署简单,正是应为Erlang使得RabbitMQ集群部署变的超级简单;

                  社区活跃度高,根据网上资料来看,RabbitMQ也是首选;

2.RabbitMQ系统最核心的组件是Exchange(交换机)和Queue(队列)

   工作机制--> 生产者、消费者和代理

                 生产者:消息的创建者,负责创建和推送数据到消息服务器;

                 消费者:消息的接收方,用于处理数据和确认消息;

                 代理:就是RabbitMQ本身,用于扮演“快递”的角色,本身不生产消息,只是扮演“快递”的角色。

3.AMQP协议

                  AMQP协议是一个二进制协议,拥有一些现代特点:多信道、协商式、异步、安全、跨平台、中立、高效。

                  AMQP通常被划分为三层:

                 模型层定义了一套命令(按功能分类),客户端应用可以利用这些命令来实现它的业务功能。

                 会话层负责将命令从客户端应用传递给服务器,再将服务器的应答传递给客户端应用,会话层为这个传递过程提供可靠性、同步机制和错误处理。

                 传输层提供帧处理、信道复用、错误检测和数据表示。

                 实现者可以将传输层替换成任意传输协议,只要不改变AMQP协议中与客户端应用程序相关的功能。实现者还可以使用其他高层协议中的会话层。

4.AMQP功能

                存储转发(多个消息发送者,单个消息接收者)。

                分布式事务(多个消息发送者,多个消息接收者)。

                发布订阅(多个消息发送者,多个消息接收者)。

               基于内容的路由(多个消息发送者,多个消息接收者)。

               文件传输队列(多个消息发送者,多个消息接收者)。

               点对点连接(单个消息发送者,单个消息接收者)。

5.AMQP术语

              AMQP模型(AMQP Model):一个由关键实体和语义表示的逻辑框架,遵从AMQP规范的服务器必须提供这些实体和语义。为了实现本规范中定义的语义,客户端可以发送命令来控制AMQP服务器。

              连接(Connection):一个网络连接,比如TCP/IP套接字连接。

              会话(Session):端点之间的命名对话。在一个会话上下文中,保证“恰好传递一次”。

              信道(Channel):多路复用连接中的一条独立的双向数据流通道。为会话提供物理传输介质。

              客户端(Client):AMQP连接或者会话的发起者。AMQP是非对称的,客户端生产和消费消息,服务器存储和路由这些消息。

              服务器(Server):接受客户端连接,实现AMQP消息队列和路由功能的进程。也称为“消息代理”。

              端点(Peer):AMQP对话的任意一方。一个AMQP连接包括两个端点(一个是客户端,一个是服务器)。

              搭档(Partner):当描述两个端点之间的交互过程时,使用术语“搭档”来表示“另一个”端点的简记法。比如我们定义端点A和端点B,当它们进行通信时,端点B是端点A的搭档,端点A是端点B的搭档。

             片段集(Assembly):段的有序集合,形成一个逻辑工作单元。

             段(Segment):帧的有序集合,形成片段集中一个完整子单元。

             帧(Frame):AMQP传输的一个原子单元。一个帧是一个段中的任意分片。

             控制(Control):单向指令,AMQP规范假设这些指令的传输是不可靠的。

             命令(Command):需要确认的指令,AMQP规范规定这些指令的传输是可靠的。

             异常(Exception):在执行一个或者多个命令时可能发生的错误状态。

             类(Class):一批用来描述某种特定功能的AMQP命令或者控制。

             消息头(Header):描述消息数据属性的一种特殊段。

             消息体(Body):包含应用程序数据的一种特殊段。消息体段对于服务器来说完全不透明——服务器不能查看或者修改消息体。

             消息内容(Content):包含在消息体段中的的消息数据。

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

             交换器类型(Exchange Type):基于不同路由语义的交换器类。

             消息队列(Message Queue):一个命名实体,用来保存消息直到发送给消费者。

             绑定器(Binding):消息队列和交换器之间的关联。

             绑定器关键字(Binding Key):绑定的名称。一些交换器类型可能使用这个名称作为定义绑定器路由行为的模式。

             路由关键字(Routing Key):一个消息头,交换器可以用这个消息头决定如何路由某条消息。

            持久存储(Durable):一种服务器资源,当服务器重启时,保存的消息数据不会丢失。

            临时存储(Transient):一种服务器资源,当服务器重启时,保存的消息数据会丢失。

            持久化(Persistent):服务器将消息保存在可靠磁盘存储中,当服务器重启时,消息不会丢失。

            非持久化(Non-Persistent):服务器将消息保存在内存中,当服务器重启时,消息可能丢失。

            消费者(Consumer):一个从消息队列中请求消息的客户端应用程序。

            生产者(Producer):一个向交换器发布消息的客户端应用程序。

            虚拟主机(Virtual Host):一批交换器、消息队列和相关对象。虚拟主机是共享相同的身份认证和加密环境的独立服务器域。客户端应用程序在登录到服务器之后,可以选择一个虚拟主机。

 

6.示意图:

 

转载于:https://www.cnblogs.com/MingQiu/p/10254710.html

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

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

相关文章

“Unamed VM”无法初始化 0x80070539

当我们重新安装Windows Server 2012 R2以后,之前Hyper-V的虚拟机没有进行导出,那么我们重新导入虚拟机成功以后,启动它遇到了如下错误: 那么怎么办呢?用下面的poweshell命令就可以解决 Grant-VmConnectAccess -usernam…

JSON数据格式解析库(cJSON、Jansson)的使用在STM32上移植和使用

json | json-c使用入门 这篇讲的也不错,抽空看下(网络传输json数据) https://www.bilibili.com/video/av669454528?p3&spm_id_frompageDriver 目录轻量级C语言JSON解析库1.JSON与cJSONJSON —— 轻量级的数据格式JSON语法规则cJSON2.cJSON数据结构和设计思想3.…

TEA、XTEA、XXTEA加密解密算法

参考:TEA、XTEA、XXTEA加密解密算法 地址:https://blog.csdn.net/gsls200808/article/details/48243019 其他相关博文链接:tea系列加密算法学习笔记、TEA和XxTEA跨平台加密算法 XXTEA可以直接加密解密字符串吗? 如果是字符串加密&…

WIFI 配网方式(AP模式、Smartconfig等模式)

参考:智能设备WIFI配网方式汇总 地址:https://blog.csdn.net/beauytlife_1985/article/details/87539350?spm1001.2014.3001.5502 参考:Wifi设备配网问题 地址:https://blog.csdn.net/boazheng/article/details/90906184 目录概述…

动态显示产品信息

为什么80%的码农都做不了架构师&#xff1f;>>> 今天做了个产品介绍的功能,想到只是简单的显示信息实在是无聊,那就让它动态的一个一个显示出来好了. 效果展示:http://runjs.cn/detail/topt9b26 主要的代码如下 html: info里面保存着产品的信息. <div id"c…

ALGO-162——Airport Configuration

问题描述&#xff1a;ACM机场是一个本地机场&#xff0c;对于大多数人来说&#xff0c;机场不是他们的终点或起点&#xff0c;而是中转站。机场有一个规划图。到达的大门在机场的北边&#xff08;相当于空格&#xff09;。出发的大门在机场的南边&#xff08;也相当于空格&…

CRC校验及C语言实现

摘自&#xff1a;CRC校验原理及其C语言实现 地址&#xff1a;https://blog.csdn.net/whik1194/article/details/108837493?spm1001.2014.3001.5502 什么是校验算法 最近的工作中&#xff0c;要实现对通信数据的CRC计算&#xff0c;所以花了两天的时间好好研究了一下&#xff…

技术篇(3)--QPG界面分解方法介绍

在实际开发中,我发现很多程序员花很多时间在界面处理上.并且界面之间的关系和控制逻辑可能工作量并不小.所以好些老手到后面就跑去做后台服务,做通讯去了.界面布局和交互设计本身有很多的学问,或者有很多艺术,但是本文这里先不讨论这个问题.在QPG团队实践中,我们把界面划分成很…

Linux编程MQTT实现主题发布订阅

【物联网阿里云平台开发项目实战|附课件资料】智能硬件开发-数据上云&#xff0c;零基础入门 4G模块连接阿里云教程 MQTT通信协议(mosquitto)在Linux上的环境构建与测试 MQTT通信协议(mosquitto)发布订阅例子C语言实现 MQTT客户端软件(MQTT.fx)的使用详解 各类MQTT代理服务器特…

Linux串口应用编程

目录Demo串口应用编程介绍终端Terminal串口应用编程(配置、读取、写入)struct termios 结构体配置输入模式: c_iflag输出模式: c_oflag控制模式: c_cflag(波特率、数据位、校验位、停止位)本地模式: c_lflag特殊控制字符: c_cc注意事项三种工作模式(原始模式read是否阻塞)什么时…

Linux MQTT 物联网通信

更多干货推荐可以去牛客网看看&#xff0c;他们现在的IT题库内容很丰富&#xff0c;属于国内做的很好的了&#xff0c;而且是课程刷题面经求职讨论区分享&#xff0c;一站式求职学习网站&#xff0c;最最最重要的里面的资源全部免费&#xff01;&#xff01;&#xff01;点击进…

.NET平台下Web树形结构程序设计

.NET平台下Web树形结构程序设计 我的上篇文章《树形结构在开发中的应用》主要是在Windows Form下的实现&#xff0c;下面是Web Form下的实现。数据库设计 首先&#xff0c;我们在SQL SERVER 2000里建立一个表tbTree&#xff0c;表的结构设计如下&#xff1a;列名数据类型描述长…

Advanced Installer 9.8打包实录

原文 Advanced Installer 9.8打包实录 主要介绍&#xff1a;&#xff08;1&#xff09;创建工程&#xff0c;&#xff08;2&#xff09;创建快捷方式及其图标&#xff08;3&#xff09;卸载设置 创建工程&#xff08;.net为例&#xff09;&#xff1a; 工程创建完成。。。。接下…

CMake 入门与进阶

目录cmake简介cmake的下载cmake 的使用方法示例一&#xff1a;单个源文件(cmake生成的中间文件以及可执行文件都放在build目录下)示例二&#xff1a;多个源文件示例三&#xff1a;生成库文件(动态库和静态库、修改库文件名字、最低版本要求)示例四&#xff1a;将源文件放到不同…

Linux开发板网线直连电脑配置方法/vmware虚拟机与本机的网络ping通

目录Linux开发板网线直连电脑配置方法vmware虚拟机与本机的网络ping通Linux开发板网线直连电脑配置方法 参考&#xff1a;https://www.bilibili.com/video/BV1n541197rk?spm_id_from333.999.0.0 一般情况&#xff0c;开发板连路由器&#xff0c;电脑也连路由器&#xff0c;路由…

ubuntu网站做图像外链

http://paste.ubuntu.org.cn 转载于:https://www.cnblogs.com/yuliyang/p/3658964.html

Markdown 基础学习

Markdown是什么&#xff1f; Markdwon是一种轻量级标记语言&#xff0c;它以纯文本形式&#xff08;易读、易写、易更改&#xff09;编写文档&#xff0c;并最终以HTLM格式发布。Markdown也可以理解为将以 MARKDOWN语法编写的语言转换成HTML内容的工具。 为什么要使用Markdown?…

状态机模型

参考&#xff1a;什么是状态机&#xff1f;用C语言实现进程5状态模型 参考&#xff1a;设计模式&#xff1a;一目了然的状态机图 案例&#xff1a;状态模式(C语言实现)——MP3播放、暂停案例 STM32按键消抖——入门状态机思维&#xff08;常用的switch-case形式&#xff0c;实现…

yii开启gii功能

如果不想面对黑白界面&#xff0c;那么yii框架&#xff0c;给我们提供了一个模块gii 在配置文件中main.php 再通过访问模块的方式访问gii转载于:https://www.cnblogs.com/xiashuo-he/p/3659334.html

2、基于wsgiref模块DIY一个web框架

一 web框架 Web框架(Web framework)是一种开发框架&#xff0c;用来支持动态网站、网络应用和网络服务的开发。这大多数的web框架提供了一套开发和部署网站的方式&#xff0c;也为web行为提供了一套通用的方法。web框架已经实现了很多功能&#xff0c;开发人员使用框架提供的方…