学习RabbitMQ 可以先先了解一下AMQP

简单介绍:

AMQP从一开始就设计成为开放标准,以解决众多的消息队列需求和拓扑结构问题,凭借开发,任何人都可以执行这一标准。针对标准编码的任何人都可以和任意的AMQP提供商提供的MQ服务器进行互动

RabbitMQ  和邮箱、IM(即时通信)模型是有区别的,邮箱具有离线传递消息的能力,消息格式是固定,RabbitMQ的消息结构怎么不是固定的 ,可以文本也可以二进制数据等。

RabbitMQ 和IM区别在于,RabbitMQ接受和发送方都不知道对方是谁。IM反之

消费者和生产者(跟经济学中的概念可不一样)

上面就是rabbitMQ通信流程,消费者只会接收到到有效载荷不会接受到标签,也就是说它不知道消息的发送者是谁。要想知道谁发的消息除非在内容中标注。工作模式有点像邮局。

AMQP连接

这里每个信道都有一个唯一ID(AMQP会记录在数据库中),发布消息和订阅消息都是都过信道来完成的,为什么使用TCP? 因为tcp的创建和销毁开销是非常昂贵的。反之信道的开销会很小而且不受TCP栈的限制。

AMQP栈(交换器、绑定、队列)

AMQP消息路由必须有三部分:交换器、绑定、队列

生产者(消息放道交换器上)-------交换器---------绑定(Q1,Q2) ------队列(Q1,Q2,Q3,Q4)-----消费者跟Q1建立连接,这样消费者就能收到生产者的消息。这就是一个大致的过程,通过绑定将交换器和队列进行关联这样消息就可以被路由了。

这个结构有点像路由器

消费者通过下面二种方式从特定的队列中接受消息:

1)basic.consume  订阅  ,消息到达后立即接受

2)basic.get 订阅,每次取一条,提示不要在循序操作这个方法来代替第一种方式。get执行完后就会执行取消队列操作。

如果一个消息发送到了一个没有任何人订阅的队列那么这个消息将如何处理? 这个消息将会等待人来订阅然后发送出去。如果多个人同时订阅了一个队列rabbitmq如何处理?

rabbitmq其实就是用循环的方式发送给每个人(一个消息只会发送给一个人)。当a消息发送给A1 ,A1告诉rabbitmq接收到了,rabbitmq就会将消息从队列中删除,B消息来了此时rabbitMQ在给A2发送消息,A2收到后恢复rabbitMQ.rabbitmq在把消息B从

队列中删除。

待续。。。。。。。。。。。。。。。。。。。。

RabbitMQ (一)的更多相关文章

  1. 消息队列——RabbitMQ学习笔记

    消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...

  2. RabbitMq应用二

    在应用一中,基本的消息队列使用已经完成了,在实际项目中,一定会出现各种各样的需求和问题,rabbitmq内置的很多强大机制和功能会帮助我们解决很多的问题,下面就一个一个的一起学习一下. 消息响应机制 ...

  3. 如何优雅的使用RabbitMQ

    RabbitMQ无疑是目前最流行的消息队列之一,对各种语言环境的支持也很丰富,作为一个.NET developer有必要学习和了解这一工具.消息队列的使用场景大概有3种: 1.系统集成,分布式系统的设 ...

  4. RabbitMq应用一的补充(RabbitMQ的应用场景)

    直接进入正题. 一.异步处理 场景:发送手机验证码,邮件 传统古老处理方式如下图 这个流程,全部在主线程完成,注册->入库->发送邮件->发送短信,由于都在主线程,所以要等待每一步完 ...

  5. RabbitMq应用一

    RabbitMq应用一 RabbitMQ的具体概念,百度百科一下,我这里说一下我的理解,如果有少或者不对的地方,欢迎纠正和补充. 一个项目架构,小的时候,一般都是传统的单一网站系统,或者项目,三层架构 ...

  6. 缓存、队列(Memcached、redis、RabbitMQ)

    本章内容: Memcached 简介.安装.使用 Python 操作 Memcached 天生支持集群 redis 简介.安装.使用.实例 Python 操作 Redis String.Hash.Li ...

  7. 消息队列性能对比——ActiveMQ、RabbitMQ与ZeroMQ(译文)

    Dissecting Message Queues 概述: 我花了一些时间解剖各种库执行分布式消息.在这个分析中,我看了几个不同的方面,包括API特性,易于部署和维护,以及性能质量..消息队列已经被分 ...

  8. windows下 安装 rabbitMQ 及操作常用命令

    rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统.它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器,Rab ...

  9. RabbitMQ + PHP (三)案例演示

    今天用一个简单的案例来实现 RabbitMQ + PHP 这个消息队列的运行机制. 主要分为两个部分: 第一:发送者(publisher) 第二:消费者(consumer) (一)生产者 (创建一个r ...

  10. RabbitMQ + PHP (二)AMQP拓展安装

    上篇说到了 RabbitMQ 的安装. 这次要在讲案例之前,需要安装PHP的AMQP扩展.不然可能会报以下两个错误. 1.Fatal error: Class 'AMQPConnection' not ...

随机推荐

  1. bzoj 3622 DP + 容斥

    LINK 题意:给出n,k,有a,b两种值,a和b间互相配对,求$a>b$的配对组数-b>a的配对组数恰好等于k的情况有多少种. 思路:粗看会想这是道容斥组合题,但关键在于如何得到每个a[ ...

  2. 分享一个彻底冻结对象的函数——来自阮一峰老师的《ECMAScript 6 入门》

    var constantize = (obj) => { Object.freeze(obj); Object.keys(obj).forEach( (key, i) => { if ( ...

  3. laravel artisan 工具心得

    介绍一些非常好用的命令: 1.创建一个Eloquent模型:顺便创建一个对应的数据库表 php artisan make:model --migration Models/Admin/test 2.将 ...

  4. NYOJ 136 等式 (哈希)

    题目链接 描述 有以下等式:a1x13+a2x23+a3x33+a4x43+a5*x53=0 x1,x2,x3,x4,x5都就在区间[-50,50]之间的整数,且x1,x2,x3,x4,x5都不等于0 ...

  5. LOW逼三人组(一)----冒泡算法

    排序 1.冒泡排序 冒泡算法 import random # 随机模块 def bubble_sort(li): ###################################冒泡排序#### ...

  6. redis集群离线安装环境搭建过程

    本文是继上次redis集群重新整理的离线搭建环境,关于前期的redis集群准备工作参考我另一篇博客: http://www.cnblogs.com/qlqwjy/p/8566573.html 由于集群 ...

  7. perl6正则 6: 大小写/空白/匹配所有符合

    这个 :g 只能写在外面 m:g /re/

  8. 超简便安装mysql

    CentOS7默认数据库是mariadb,配置等用着不习惯,因此决定改成mysql,但是CentOS7的yum源中默认好像是没有mysql的.为了解决这个问题,我们要先下载mysql的repo源. 1 ...

  9. Appium环境搭建说明(包括报错处理)

    Appium环境搭建说明 一.环境配置 前提是windows系统已安装以下软件: 1.jdk 我装的是1.8.0 2.android-sdk 3.python,3.4-3.6 5.Node.js,v8 ...

  10. Centos 6.4搭建git服务器【转】

    前阵子公司需要,让我搭个Git服务器,把之前用的SVN上代码迁移到git上去,所以就在阿里云主机上搭了一个,记录了下安装过程,留存文档以备查阅.本篇本章只涉及搭建部分的操作,更多git的使用可以参考文 ...