AMQP 0-9-1学习笔记

AMQP(Advanced Message Queuing Protocol)高级消息队列协议:是一个进程间传递异步消息的网络协议

2.
AMQP的基本模型: Publisher(发布者) → Exchange(交换机) → Queue(队列) → Consumer(消费者)
3.
工作原理:publisher public Message to Exchange. Exchange deliver the message to Queue by Route.Consumer consum the message(Return result or no return).
4.深入理解
4.1 发布者、交换机、队列、消费者都可以有多个。因为AMQP是一个网络协议协议,所以这个过程中的发布者,消费者,消息代理可以分别存在于不同的设备上。负载均衡处理
4.2 发布者发货消息时可以给消息指定个钟消息属性(Message Meta-data)。有些属性有可能会被消息代理(Brokers)使用,然而其他的属性则是完全不透明的,他们只能被接受消息的应用所使用。
4.3 从安全角度考虑,网络是不可靠的,又或是消费者在处理消息的过程中意外挂掉,这样没有处理成功的消息就会丢失。基于此原因,AMQP模块包含了一个消息确认(Message Acknowledgements)机制:当一个消息从队列中投递给消费者后,不会立即从队列中删除,知道它收到来自消费者的确认回执(Acknowledgement)后,才完全从队列中删除。
5.Exchange(交换机)
AMQP 0-9-1提供了4种默认的交换机
1.Direct Exchange((Empty string) and amq.direct) Depend on Routing key
2.Fanout exchange(amq.fanout) Delivery the message to all it's was binded Queues
3.Topic exchange(amq.topic) depend on Routing key and pattern
 
    {

    When a queue is bound with "#" (hash) binding key - it will receive all the messages, regardless of the routing key - like in fanout exchange.

    When special characters "*" (star) and "#" (hash) aren't used in bindings, the topic exchange will behave just like a direct one.

 
 }
4.Headers exchange(amq.match(and amq.headers in RabbitMQ)) depend on mutiple attributes
除了这些交换机类型外,交换机还有很多的属性,比较重要的如下
1.Name(名称)
2.Durability(Exchange survive broker restart)
3.Auto-delete(exchange is deleted when last queue is unbound from it)
4.Arguments(optional,used by plugins and broker-specific features)
6.Queue(消息队列)
所有的消息都存储在消息队列里面(包括:1.待消费的消息 2.正在消费的消息),一般的消息队列都只要声明了,就不会修改队列的属性,如果修改了,必须要删除旧的消息队列,然后重新生成新的。
6.1消息队列的特性:
6.1.1 Name 如果声明队列的时候不指定队列名称,代理会为队列声明一个唯一的队列名称。
6.1.2 Durabel(the queue will survive a broker restart) 队列的持久性不会使路由到该队列的消息持久。如果代理被删除然后重新启动,则在代理重启期间将重新声明持久队列,但是,只会恢复持久性消息。
6.1.3 Exclusive(Used by only one connection and the queue will be deleted when that connection closes)
6.1.4 Auto-delete(queue that has had at least one consumer is deleted when last consumer unsubscribes)
6.1.5 Arguments(optional;used by plugins and broker-specific features such as message TTL.queue length limit,etc)
7.消费消息(Consumers)
Comsume message are two way in AMQP 0-9-1 (1) Have messages delivered to them("push API") (2) Fetch messages as needed("pull API")
8.Message Acknowledgements
因为网络和程序的一个失败,所以一些程序需要有一个"消息确认"。"消息确认"机制可以帮助我们创建一个更加稳定,保障的软件系统
消息确认大体分为两种:(1) 消息接受确认 (2) 消息接受并且消费确认
9.Connections(连接)
AMPQ 0-9-1 使用TCP传输。连接使用身份验证,可以使用TLS进行保护。当应用程序不再需要连接服务器时,关闭它的AMQP 0-9-1连接,而不是关闭TCL连接。
10.Vitual Host(虚拟主机)
为了使单个代理可以托管多个隔离的“环境”(用户组,交换,队列等),AMQP包含虚拟主机(虚拟主机)的概念。它们类似于许多流行的Web服务器使用的虚拟主机,并提供AMQP实体所在的完全隔离的环境。AMQP客户端指定在AMQP连接协商期间要使用的vhost。

AMPQ 0-9-1学习笔记的更多相关文章

  1. MySQL4.0命令操作学习笔记

    声明:下列内容并非原创,仅仅是最近学习笔记整理. -------------------------------------- 进入mysql安装路径bin目录下: 1.开启服务 winmysqlad ...

  2. Android 6.0 权限知识学习笔记

    最近在项目上因为6.0运行时权限吃了亏,发现之前对运行时权限的理解不足,决定回炉重造,重新学习一下Android Permission. 进入正题: Android权限 在Android系统中,权限分 ...

  3. Cocos Studio1.5.0.1开发学习笔记(一)

    听说Cocos Studio很久了,主要是因为骨骼动画.目前看来Cocos2d-x播放动画的方式只有2种: 第一种:是播放序列帧动画,即将动画的每一帧都加载进缓存里,需要播放时再使用Animation ...

  4. 《C# 6.0 本质论》 - 学习笔记

    <C# 6.0 本质论> ========== ========== ==========[作者] (美) Mark Michaelis (美) Eric Lippert[译者] (中) ...

  5. 环境配置与JBoss安装-EJB3.0入门经典学习笔记(1)

    目录 1. JDK的安装 2. JBoss的安装 3. JBoss安装目录说明 1. JDK的安装 1) 下载JDK 下载地址:http://www.oracle.com/technetwork/ja ...

  6. Python数据分析与展示第0&1周学习笔记(北理工 嵩天)

    一前奏 1..Python语言开发工具选择 IDLE:自带默认常用入门级 PyCharm:简单.集成度高 Anaconda:awesome IDE较为简单,不做详细记录. 二.表示 1.numpy库入 ...

  7. 0. WP8.1学习笔记

    应用程序生命周期: 运行: 在程序NotRunning状态下点击图标,应用将处于Running状态,这会触发一个Actived事件 挂起: 在程序Running状态下, 点击返回键或win键会触发一个 ...

  8. JBoss部属和EJB调用-EJB3.0入门经典学习笔记(2)

    目录 1. 在JBoss中部属  2. 在Tomcat中调用EJB  3. 在JBoss中调用EJB  1. 在JBoss中部属 1) JBoss的配置目录 路径D:\Java\jboss6\serv ...

  9. vue 2.0源码学习笔记—new Vue ( Vue 初始化过程 )

    new Vue(Vue 初始化) 一个vue实例化到底经历了什么?已下是博主自己的总结,不正确的地方请指出,谢谢~ 一.简述 从使用角度来看,挂载的顺序如下 1. $slots 2. $scopedS ...

  10. Linux命令学习笔记目录

    Linux命令学习笔记目录 最近正在使用,linux,顺便将用到的命令整理了一下. 一. 文件目录操作命令: 0.linux命令学习笔记(0):man 命令 1.linux命令学习笔记(1):ls命令 ...

随机推荐

  1. 基于保守性和规则性的预测方法SIFT和PolyPhen

    有什么特征可以帮助我们来区分导致功能和表型变化的变异和其他变异,然后我们如何综合特征来做出一个预测模型? 表型或功能的改变(phenotypical/functional effect)a,个体表型上 ...

  2. 阿里云OSS-web直传---在服务端c#签名,浏览器直传

    OSS web直传---在服务端php签名,浏览器直传 本文:OSS web直传---在服务端c#签名,浏览器直传 其他语言的范例地址:https://help.aliyun.com/document ...

  3. 高并发Redis(Mac)环境配置(一)

    一.产生原因: SNS交互型网站的兴起,对于高并发,大负载数据的操作,海量数据的存储和访问 NoSql四种类型: 键值存储(Redis优点可以快速查询,缺点缺少存储的结构化)              ...

  4. HDU 2159 FATE (二维背包)

    题意:中文题. 析:dp[i][j] 已经杀了 i 个怪兽,已经用了 j 体积,所能获得的最大经验值,这个和一维的差不多,只是加一维而已. 代码如下: #pragma comment(linker, ...

  5. Word文档发布到CSDN博客

    目前大部分的博客作者在写博客这件事情上都会遇到以下3个痛点:1.所有博客平台关闭了文档发布接口,用户无法使用Word,Windows Live Writer等工具来发布博客.2.发布到博客或公众号平台 ...

  6. dojo dgrid 的列显示html控件

    var columns = [ { field: "first", label: "First Name", formatter:function(data,o ...

  7. Alpha阶段项目复审(菜就完事了队)

    Alpha阶段项目复审 小组 优点 缺点 名次 天冷记得穿秋裤队 实现的功能完整,可以离线下载 下载不稳定,大文件无法下载 1 中午吃啥队 使用方便,操作简单 界面适应不够好 2 只会嘤嘤嘤队 游戏和 ...

  8. DateTime.Now.ToString("yyyy/MM/dd") 时间格式化中的MM为什么是大写的?

    如果MM是小写,就表示时间里的分钟yyyy-MM-dd HH:mm:ss (年-月-日 时:分:秒) yyyy-MM-dd HH:mm:ss 年-月-日 时:分:秒大写是为了区分“月”与“分” 顺便说 ...

  9. button的onclick函数一直刷新

    button中的onclick写成函数时需要 <button onclick="return function();"></button> 加一个retur ...

  10. Replication--Alwayson+订阅

    场景: 主服务器:SubServer1 从服务器:SubServer2 监听者:RepListener 分发库:DisServer 发布数据库:RepDB1 发布服务器:RepServer1 当fai ...