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.…

cytoscape操作经验

1.cytoscape批量修改节点属性?首先要创建一个节点属性文档(.txt),比如说drug1 1drug2 1complex1 0complex2 0第一列是名字,第二列是属性,用空格分开;然后导入节点属性,在Vizmapper中下拉的visual mapping b…

[ZJOI2007]棋盘制作 悬线法dp 求限制下的最大子矩阵

https://www.luogu.org/problemnew/show/P1169 第一次听说到这种dp的名称叫做悬线法,听起来好厉害 题意是求一个矩阵内的最大01交错子矩阵,开始想的是dp[2000][2000][2]维护这个位置向上向左扩充的矩阵最大长度之后n扫一遍,但是写起来发现并不…

TEA、XTEA、XXTEA加密解密算法

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

用户自定义的数据库备份(选自csdn\blog)

用户自定义的数据库备份 备份类型 备份方法 示例 数据文件 操作系统命令或工具 C:\COPY datafile1.ora datafile.bak 归档重做日志文件 操作系统命令或工具 C:\COPY log_01_23.arc log_01_23.bak 控制文件 SQL命令 SQL>ALTER DATABASE BACKUP CONTROLFILE TO confile.bak; …

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…

额,你在main.xml中加了一个id以后,要右键点save,才会将这个id加入到R中,否则是没有的。。。R里的东西是程序自动生成的~~~...

我修改了 main.xml 然后我在主函数中调用main里面的东西 例如在main.xml加了一个id 我在主函数用 R.id老是调用不出来 如何才能快速的准确的调用出 main.xml里面的东西呢? 额&#xff0c;你在main.xml中加了一个id以后&#xff0c;要右键点save&#xff0c;才会将这个id加入…

讲二次搜索树转化为排序的双向链表

package com.gylhaut.bean;public class TreeNode<T> {public T data;public TreeNode left;public TreeNode right;public TreeNode(T data) {this.left null;this.right null;this.data data;} }算法实现&#xff1a; package com.gylhaut.util;import com.gylhaut.…

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

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

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

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

用memcached实现session共享

用memcached实现session共享一、简介1&#xff09;Memcached简介&#xff1a;是一种高性能的分布式缓存服务器&#xff1b;一般的使用目的是&#xff0c;通过“缓存数据” 查询结果&#xff0c;减少数据访问次数&#xff0c;以提高动态web应用的速度&#xff1b;开源且垮平台的…

事物传递机制、应用、加载时机

try() catch(){ } 后事物会回滚吗 事物机制 事物的底层实现 spring 事物 a调用 b调用a的时候对bean进行加载后&#xff0c;对原生类生成代理类(jdk代理或者cglibdialing)代理类 在调用的时候 注意是调用的时候 对有trasaction或者拦截切面切点的方式方法 增加事物管理。默认的事…

Linux串口应用编程

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

一篇有关教育的文章

http://learning.sohu.com/s2005/jiatingjiaoyu.shtml转载于:https://www.cnblogs.com/froster/archive/2005/11/04/268642.html

Codeforces - 65D - Harry Potter and the Sorting Hat - 简单搜索

https://codeforces.com/problemset/problem/65/D 哈利波特&#xff01;一种新思路的状压记忆化dfs&#xff0c;记得每次dfs用完要减回去。而且一定是要在dfs外部进行加减&#xff01;防止在中间return的时候忘记弄回来。用哈希记录状态实现真正的记忆化。 #include<bits/st…