使用流程

发布者(推送消息的一端):

  1. 创建一个tcp长连接connection,连接rabbitmq的监听端口5672;

  2. 在TCP长连接下创建一个信道channel,信道可以理解为connection的一个分支;

  3. 通过信道向rabbitmq声明一个交换机exchange,设置交换机的类型,名称,是否持久化等属性;

  4. 通过信道向rabbitmq声明一个队列queue,设置队列的名称,是否持久化等参数;

  5. 通过信道向rabbitmq声明一个绑定binding,设置绑定的交换机名称,队列名称,绑定的路由键;

  6. 通过信道向rabbitmq推送一条消息,指定交换机和路由;

消费者(接收消息的一端):

  1. 从第一步到第四步和发布者做的事情是一模一样的,如果已经存在相应的exchange、queue等则跳过;

  2. 通过信道向rabbitmq声明一个订阅,订阅特定的queue,并且设置回调函数及是否确认等;

  3. 通过信道监听rabbitmq推送过来的消息;

【原理】RabbitMQ概要图的更多相关文章

  1. java基础知识概要图

  2. RabbitMQ 集群原理和完善

    一.RabbitMQ集群方案的原理 RabbitMQ这款消息队列中间件产品本身是基于Erlang编写,Erlang语言天生具备分布式特性(通过同步Erlang集群各节点的magic cookie来实现 ...

  3. rabbitMQ消息队列原理

    MQ:Message Queue,消息队列,是一种应用程序对应用程序的通信方法:应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们. 1      rabbitMQ入 ...

  4. RabbitMQ 集群原理

    RabbitMQ默认集群原理 rabbitmq 本身是基于erlang编写,erlang语言天生具备分布式的特性(通过同步Erlang集群各节点的erlang cookie实现),RabbiteMQ天 ...

  5. ch01.深入理解C#委托及原理(转)

    ch01..深入理解C#委托及原理_<没有控件的ASPDONET> 一.委托 设想,如果我们写了一个厨师做菜方法用来做菜,里面有 拿菜.切菜.配菜.炒菜 四个环节,但编写此方法代码的人想让 ...

  6. RabbitMQ消息队列之二:消费者和生产者

    在使用RabbitMQ之前,需要了解RabbitMQ的工作原理. RabbitMQ的工作原理 RabbitMQ是消息代理.从本质上说,它接受来自生产者的信息,并将它们传递给消费者.在两者之间,它可以根 ...

  7. RabbitMQ分布式集群架构和高可用性(HA)

    (一) 功能和原理 设计集群的目的 允许消费者和生产者在RabbitMQ节点崩溃的情况下继续运行 通过增加更多的节点来扩展消息通信的吞吐量 1 集群配置方式 RabbitMQ可以通过三种方法来部署分布 ...

  8. 消息中间件 rabbitMQ

    参考内容:https://www.cnblogs.com/dwlsxj/p/RabbitMQ.html 一.什么是RabbitMQ RabbitMQ是一个由erlang 开发的AMQP(Advance ...

  9. 关于RabbitMQ分布式集群架构

    RabbitMQ分布式集群架构和高可用性(HA) (一) 功能和原理 设计集群的目的 允许消费者和生产者在RabbitMQ节点崩溃的情况下继续运行 通过增加更多的节点来扩展消息通信的吞吐量 1 集群配 ...

随机推荐

  1. PHP opendir() 函数

    打开一个目录,读取它的内容,然后关闭: <?php$dir = "/images/"; // Open a directory, and read its contentsi ...

  2. CF 1150 D Three Religions——序列自动机优化DP

    题目:http://codeforces.com/contest/1150/problem/D 老是想着枚举当前在给定字符串的哪个位置,以此来转移. 所以想对三个串分别建 trie 树,然后求出三个t ...

  3. nginx添加一个server

    nginx添加一个server server { listen 80; server_name dev.pccb.com; index index.html index.htm; # rewrite ...

  4. Sqli labs系列-less-5&6 报错注入法(上)

    在我一系列常规的测试后发现,第五关和第六关,是属于报错注入的关卡,两关的区别是一个是单引号一个是双引号...当然我是看了源码的.... 基于报错注入的方法,我早就忘的差不多了,,,我记的我最后一次基于 ...

  5. ssm项目配置多个数据源

    在项目中到一些问题,一些查询模块需要链接另一个数据库,这时,就可以配置两个数据源进行操作. 1.创建jdbc.properties jdbc.url = jdbc:mysql://localhost: ...

  6. memset函数及原补反码关系

    memset函数及原补反码关系 计算机存储的是补码 几组常用的memset函数初始化值 10000000 128 10000000 10000000 10000000 10000000 -213906 ...

  7. 项目集成swagger,并暴露指定端点给swagger

    项目集成swagger 一:思考: 1.swagger解决了我们什么问题? 传统开发中,我们在开发完成一个接口后,为了测试我们的接口,我们通常会编写单元测试,以测试我们的接口的可用性,或者用postm ...

  8. find pattern

    daniel@daniel-mint ~/msf/metasploit-framework/tools $ ruby pattern_create.rb 2000 Aa0Aa1Aa2Aa3Aa4Aa5 ...

  9. 浅析Reactor设计模式

    简介:Reactor 设计模式是一种事件驱动的设计模式,将一个或者多个客户端请求分发到不同的处理器上,来提升事件处理的效率.主要的应用场景就是java NIO当中用户处理网络请求.使用的是异步非阻塞I ...

  10. vue入门例子

    vue入门例子 1.声明示渲染        {{message}} 2.绑定事件 v-bind 3.控制切换一个程序是否显示        v-if 4.渲染循环                  ...