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. HDU 6125 Free from square (状压DP+背包)

    题意:问你从 1 - n 至多选 m 个数使得他们的乘积不能整除完全平方数. 析:首先不能整除完全平方数,那么选的数肯定不能是完全平方数,然后选择的数也不能相同的质因子. 对于1-500有的质因子至多 ...

  2. CodeForces 690C2 Brain Network (medium)(树上DP)

    题意:给定一棵树中,让你计算它的直径,也就是两点间的最大距离. 析:就是一个树上DP,用两次BFS或都一次DFS就可以搞定.但两次的时间是一样的. 代码如下: #include<bits/std ...

  3. 回归(regression)、梯度下降(gradient descent)

    本文由LeftNotEasy所有,发布于http://leftnoteasy.cnblogs.com.如果转载,请注明出处,在未经作者同意下将本文用于商业用途,将追究其法律责任. 前言: 上次写过一篇 ...

  4. Hive 0.12.0安装指南

    目录 目录 1 1. 前言 1 2. 约定 1 3. 服务端口 2 4. 安装MySQL 2 4.1. 安装MySQL 2 4.2. 创建Hive元数据库 2 5. 安装步骤 3 5.1. 下载Hiv ...

  5. spring mvc---controller返回值

    1.ModelAndView 类似servlet,之前例子在用 addObject setViewName 2.String a.表示返回逻辑视图名 spring mvc的视图解析器中设置.(在web ...

  6. Freemark与spring整合

    SpringMVC环境的搭建在这里就不多说了,我们这节主要是FreeMarker与SpringMVC整合 首先,在springmvc的配置文件普通视图之前,加入freemarker的视图 fre-se ...

  7. eclipse配置tomcat 8.0.24服务器

    开发j2ee,肯定需要web容器来运行web项目,目前web容器有tomcat,jetty,Jboss,weblogic等服务器,最为常用的是tomcat服务器,其与eclipse的配置如下: tom ...

  8. ArcGIS应用——使用Python为图斑连续编号及扩展应用

    为图斑连续编号 在GIS应用中,为图斑连续编号(编号递增)是一项常见的需求,利用ArcGIS,可以方便的实现. Python脚本如下: rec=0 def autoIncrement(): globa ...

  9. HDU 1496

    题目出处:HDU OJ 1496 http://acm.hdu.edu.cn/showproblem.php?pid=1496 为了练习Hash,特定采用了杭电自带的分类列表http://acm.hd ...

  10. c# Quartz.net的简单封装

    分享一个以前封装的Quartz.net类. 新建一个QuartzClass类库项目.nuget控制台输入 image.png 添加Quartz.net的引用. 我们新建一个JobBase.cs文件,里 ...