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. Perl 学习笔记-高级控制结构

    1.unless控制结构 类似于独立的else语句; 要么条件为真, 要么执行语句块内的代码;  unless(<condition>){code...;} 等价于  if(<con ...

  2. rest-framework-----url控制

    一:自定义路由(原始方式) from django.conf.urls import url from app01 import views urlpatterns = [ url(r'^books/ ...

  3. css3的那些高级选择器二

    在上个星期我介绍了css3的属性选择器,伪类选择器和结构伪类选择器,今天楼主继续把其它的css3选择器说完. 在css3中,共有11中UI状态伪类选择器,分别是E:hover,E:active,E:f ...

  4. Android编程设置LayoutParams

    RelativeLayout.LayoutParams linearParams = (RelativeLayout.LayoutParams)viewHolder.headerWraper.getL ...

  5. 《FilthyRichClients》读书笔记(一)-SwingのEDT

    <FilthyRichClients>读完了前几个章节,现将我的体会结合工作以来从事Swing桌面开发的经验,对本书的一些重要概念进行一次 分析,对书中的一些遗漏与模糊的地方及时补充,同时 ...

  6. 洛谷P4174 [NOI2006]最大获利(最大流)

    题目描述 新的技术正冲击着手机通讯市场,对于各大运营商来说,这既是机遇,更是挑战.THU 集团旗下的 CS&T 通讯公司在新一代通讯技术血战的前夜,需要做太多的准备工作,仅就站址选择一项,就需 ...

  7. 关于typedef的用法总结(装)

    不管实在C还是C++代码中,typedef这个词都不少见,当然出现频率较高的还是在C代码中.typedef与#define有些相似,但更多的是不同,特别是在一些复杂的用法上,就完全不同了,看了网上一些 ...

  8. Postgres数据库在Linux中优化

    I/O 优化1 打开 noatime nodirtime,async 方法: 修改 /etc/fstab stat 命令查看 2 调整预读方法: 查看 sudo blockdev --getra /d ...

  9. MIPS rev.1 指令参数

    由于MIPS各个版本之间的操作数会变,如果出现无法识别的情况 需要根据官方的MIPS instruction手册逐条核对,此处的版本为Rev.1 //******MIPS-55*********// ...

  10. 什么是C#?什么是.NET Framework?

    1.什么是C#: 解1:C#就是一门开发语言,是由C及C++演变而来的,有朋友戏称之为"C四个+",这里的"#"号,不读"井",而读做&qu ...