04年,AMQP开放标准被开发
06年,AMQP规范被发布
 

基本概念

    Message:与平台无相关的数据。
    Publisher:向交换器发布消息的客户端应用程序
    Exchange:用来接收消息生产者所发送的消息并把这些消息路由给服务器中的队列
    Binding:用于消息队列和交换器之间的关联
    VirtualHost:是消息队列以及相关对象的集合,是共享同一个身份验证和加密环境的独立服务器。
    Broker(消息代理):表示消息队列服务器实体,接受客户端连接,实现AMQP消息队列和路由功能的过程。
    Routing Key(路由规则):虚拟机用它来确定如何路由一个特定的消息。
    Queue:用来保存消息的消息队列。
    Connection:略
    Channel:略
    Consumer:略
 

消息的生命周期:

            描述消息被生产者生产直到被消费者消费过程
    
        Q1:如果消息在Exchange不能被路由怎么办?
        A1:交换器会将消息丢弃或者将其返回给生产者
 
        Q1:消息在消息队列传递给消费者时不成功?
        A1:消息队列存储消息或者持久化到内盘或者内存中,等待消费者准备好;如果没有消费者,消息队列可以通过AMQP将消息返回给生产者。
 

交换器的生命周期

        每台AMQP服务器都预先创建了许多交换器实例,他们在服务器启动时就存在并且不能被销毁。可以选择自己创建交换器,并在完成工作后销毁。
 

队列的生命周期

        持久化消息队列可被多个消费者共享,不管是否有消费者接受,他们都可以独立存在。
        临时消息队列对某个消费者是私有的,只能绑定到此消费者,当消费者断开连接时,该消息队列被删除。

功能命令

        这里说的功能命令是指协议对外提供一套可操作的命令集合,应用程序正是基于这些命令来实现自己的业务功能。
        AMQP协议文本是分层描述的,在不同主版本中划分的层次是有一定的区别,在0-9版本中分成FunctionLayer(功能层)和TransportLayer(传输层)两层,而在0-10版本中分为ModeLayer(模型层)、SessionLayer(会话层)、TransportLayer(传输层)三层,分层的目的是在不改变协议对外提供的功能的前提下替换各层的实现,而又不影响该层与其他层的交互。在AMQP 0-9版本中,功能命令包括Connection、Channel、Exchange、Queue、Basic和Transaction几大类,每个命令按照类+方法+参数的 方式来组织描述。
 

消息数据格式

        在消息生命周期中,描述了一条消息队列服务器中流转的过程,为了实现这些处理过程,所有的消息必须有特定的格式来支持,这部分是在传输层中定义的。
 
消息信道复用
 
数据可见性保证
 
内容排序保证
 
错误处理
 
 
 
 
 
 
 
 
 
 

消息中间件 | 消息协议 | AMQP -- 《分布式 消息中间件实践》笔记的更多相关文章

  1. 消息中间件 | 消息协议 | MQTT3.1.1 -- 《分布式 消息中间件实践》笔记

    1999年,IBM和合作伙伴共同发明MQTT协议 14年,MQTT正式成为推荐的物联网传输协议标准 常应用于很多机器计算能力有限.底带宽.网络不可靠的远程通信应用场景中.   主要概念     MQT ...

  2. 消息中间件 | 消息协议 | STOPM -- 《分布式 消息中间件实践》笔记

    12年,STOMP1.2规范发布  简单的文本消息传输协议,提供一种可互相操作的连接格式,允许客户端与任意消息服务器进行交互 主要的概念     STOMP包含客户端和服务器,其中客户端指生产者或消费 ...

  3. 阿里分布式开放消息服务(ONS)原理与实践——笔记整理

    1.MQ场景    1)订单异步解耦    2)解决分布式事务问题    3)应用于聊天平台    4)大规模机器的Cache同步    5)MySQL BinLog订阅数据分发2.ONS应用场景  ...

  4. 消息协议AMQP 与 JMS对比

    https://blog.csdn.net/hpttlook/article/details/23391967 https://www.jianshu.com/p/6e6821604efc https ...

  5. 分布式消息中间件rocketmq的原理与实践

    RocketMQ作为阿里开源的一款高性能.高吞吐量的消息中间件,它是怎样来解决这两个问题的?RocketMQ 有哪些关键特性?其实现原理是怎样的? 关键特性以及其实现原理 一.顺序消息 消息有序指的是 ...

  6. 消息中间件-ActiveMQ支持的消息协议

    package com.study.mq.a1_example.helloworld.queue; import org.apache.activemq.ActiveMQConnectionFacto ...

  7. [转]分布式消息中间件 MetaQ 作者庄晓丹专访

    MetaQ(全称Metamorphosis)是一个高性能.高可用.可扩展的分布式消息中间件,思路起源于LinkedIn的Kafka,但并不是Kafka的一个Copy.MetaQ具有消息存储顺序写.吞吐 ...

  8. 分布式消息中间件及RabbitMQ

    分布式应用和集群: 从部署形态来看,它们都是多台机器或者多个进程部署,而且都是为了实现一个业务功能. 如果是一个业务被拆分成多个子业务部署在不同的服务器上,那就是分布式应用 如果是同一个业务部署在多台 ...

  9. 腾讯万亿级分布式消息中间件TubeMQ正式开源

    TubeMQ是腾讯在2013年自研的分布式消息中间件系统,专注服务大数据场景下海量数据的高性能存储和传输,经过近7年上万亿的海量数据沉淀,目前日均接入量超过25万亿条.较之于众多明星的开源MQ组件,T ...

随机推荐

  1. C++内存使用机制基本概念详解

    .程序使用内存区 一个程序占用的内存区一般分为5种: ()全局.静态数据区:存储全局变量及静态变量(包括全局静态变量和局部静态变量) ()常量数据区:存储程序中的常量字符串等. ()代码区:存储程序的 ...

  2. mysql编码

    Mysql中文乱码问题完美解决方案 修改查看MYSQL字符集(charset) MySQL 乱码之我见 10分钟学会理解和解决MySQL乱码问题 /etc/mysql/my.cnf /etc/init ...

  3. luogu1776宝物筛选

    多重背包问题 一开始我们的转移方程是 ;i<=n;i++) for(int j=m;j>=w[i];j--) ;k<=c[i];k++) )dp[j]=max(dp[j],dp[j- ...

  4. 【LeetCode】018 4Sum

    题目: Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = ...

  5. IDEA发布运行web项目(曾经遇到的项目启动报404)

    问题: 配置: 配置 facets ,此步很重要,配置 web resource directories ,路径配错,就会报 404 ,一定要定位到项目根目录,也就是下面有整个项目源码的地方 下面是配 ...

  6. bzoj 1941 Hide and Seek —— K-D树

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1941 曼哈顿最小距离估价:max( 0, t[x].mn[i] - v.p[i] ) + m ...

  7. 上传下载,使用,commons-fileupload,commons-io来加载上传下载

    导入两个jarcommons-fileupload.jar,和commons-io.jar 在请求中创建核心类 // 1. 创建工厂对象 FileItemFactory factory = new D ...

  8. 资料:MVC框架+SQL Server 数据集成引擎

    ylbtech-资料:MVC框架+SQL Server 数据集成引擎 1.返回顶部 1. 功能特点: MVC框架耦合性低视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样 ...

  9. 怎么查看mysql的安装目录,环境:windows+mysql+navicat

    怎么查看mysql的安装目录 如果忘记了MySQL的安装目录,怎么快速找到呢?方法或许很多,作者觉得这种最方便了 环境:windows+mysql+navicat 方法:进入mysql命令行输入:sh ...

  10. Quartz.NET+TopSelf 实现定时服务

    转载http://www.cnblogs.com/jys509/p/4628926.html Quartz.NET 入门 2015-07-09 00:59 by jiangys, 67858 阅读,  ...