RabbitMQ理论

 

消息 = 有效载荷(数据) + 标签(包含载荷和收件人的信息)

 

信道:你的应用于RabbitMQ代理服务器之间的TCP连接(有唯一的ID),信道主要解决了每一个线程单独TCP连接造成的性能瓶颈。

 

AMQP:高级消息队列协议(Advance Message Queuing protocol)

 

AMQP 栈 = 交换器 + 队列 + 虚拟主机 (提高了吞吐量)

 

交换器类型:

direct(默认):按照路由键分发

fanout:广播分发给每一个订阅者

topic: 按照主题分发

headers(只匹配消息的header,很少用)

 

交换器与队列之间存在绑定。

 

如何让消息持久化?

1:将消息表示为持久化的:

durable属性设置为true 、投递模式 delivery model 设置为2

2:必须发布到持久化的交换器中,并且到达持久化的队列中

这样的消息会写入磁盘持久化日志文件(写好之后才会响应给生产者,消息被消费之后要标为等待垃圾收集。)

 

 

 

命令:

1:自动接收消费信息:basic.consume:

2:只获取单条信息:basic.get

3:丢弃一条消息:将requeue设置为false,消息放入死亡队列

4:创建队列:queue.declare(不指定队列的名字,会返回随机名称,在订阅和绑定时都会用到队列名称,匿名队列在构建RPC应用时会很有用)

5:队列的设置:

exclusive:true 表示私有队列,只有自己的应用能够订阅。

auto-delete:true 表示最后一个消费者取消订阅之后,队列自动移除

exclusive + auto-delete这两个命令常常组合在一起使用。

6:如何检测队列是否存在?

设置 queue.declare的passive属性为true,队列会让queue.declare返回成功,否则返回错误

7:查看运行的虚拟机:rabbitmpctl list vhost

 

 

 

多个消费者订阅了同一个队列:按照一个订阅者一条消息公平分发(因此具有负载均衡的作用),消费者受到消息必须向RabbitMQ回复确认(basic.ack),RabbitMQ将消息从队列里面删除。在应用崩溃时,RabbitMQ没有受到确认,会将消息分发给下一个订阅者,且不会再为此订阅者分发消息,人为该订阅者已经挂掉。

 

 

RabbitMQ理论的更多相关文章

  1. RabbitMQ理论部分

    概念 queue        队列 exchange   交换机 bind          绑定 channel     通道 一个发送消息流程包含上述四个概念.消息经过channel传递给exc ...

  2. RabbitMQ学习总结 第一篇:理论篇

    目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...

  3. RabbitMQ 集群与网络分区(理论知识)

    关于network partition网络设备故障导致的网络分裂.比如,存在A\B\C\D\E五个节点,A\B处于同一子网,B\C\D处于另外一子网,中间通过交换机相连.若两个子网间的交换机故障了即发 ...

  4. RabbitMQ基本理论

    本节内容 一  RabbitMQ介绍 二  RabbitMQ安装配置 三  RabbitMQ的Python实现-pika 1. 生产者消费者 2. 工作队列 3. 持久化和公平分发 4. 发布与订阅 ...

  5. RabbitMQ 相关理论部分

    集群配置方式 RabbitMQ可以通过三种方法来部署分布式集群系统,分别是:cluster,federation,shovel cluster: 不支持跨网段,用于同一个网段内的局域网 可以随意的动态 ...

  6. RabbitMQ入门-理论

    目录 RabbitMQ简介 RabbitMQ原理简介 RabbitMQ安装 .NET Core 使用 RabbitMQ Hello World 工作队列 扇型交换机 直连交换机 主题交换机 远程过程调 ...

  7. RabbitMQ 高可用集群搭建及电商平台使用经验总结

    面向EDA(事件驱动架构)的方式来设计你的消息 AMQP routing key的设计 RabbitMQ cluster搭建 Mirror queue policy设置 两个不错的RabbitMQ p ...

  8. RabbitMQ学习系列(四): 几种Exchange 模式

    上一篇,讲了RabbitMQ的具体用法,可以看看这篇文章:RabbitMQ学习系列(三): C# 如何使用 RabbitMQ.今天说些理论的东西,Exchange 的几种模式. AMQP协议中的核心思 ...

  9. RabbitMQ原理与相关操作(三)消息持久化

    现在聊一下RabbitMQ消息持久化: 问题及方案描述 1.当有多个消费者同时收取消息,且每个消费者在接收消息的同时,还要处理其它的事情,且会消耗很长的时间.在此过程中可能会出现一些意外,比如消息接收 ...

随机推荐

  1. 抽屉之Tornado实战(1)--分析与架构

    抽屉之Tornado实战(1)--分析与架构   项目模拟地址:http://dig.chouti.com/ 知识点应用: AJAX  用于偷偷发请求 原生ajax jQuery  ajax($.aj ...

  2. (转载)centos7启用端口

    转载:原文地址:https://www.cnblogs.com/moxiaoan/p/5683743.html   1.firewalld的基本使用 启动: systemctl start firew ...

  3. nginx最基本操作

    1.安装 yum install nginx 2.查看配置位置 nginx -t 3.查看nginx.conf,找到默认html配置路径 vi /etc/nginx/nginx.conf cd /us ...

  4. 洛谷P3041 视频游戏的连击Video Game Combos [USACO12JAN] AC自动机+dp

    正解:AC自动机+dp 解题报告: 传送门! 算是个比较套路的AC自动机+dp趴,,, 显然就普普通通地设状态,普普通通地转移,大概就f[i][j]:长度为i匹配到j 唯一注意的是,要加上所有子串的贡 ...

  5. DMA驱动框架

    框架入口源文件:dma.c (可根据入口源文件,再按着框架到内核走一遍) 内核版本:linux_2.6.22.6    硬件平台:JZ2440 以下是驱动框架: 以下是驱动代码  dma.c : #i ...

  6. 程序------>数据结构

    一程序概念: 1.对身边的任何一个事物进行认知和分类,从而得到一些信息: 2.在得到的信息基础之上建立了概念模型: 3.根据概念模型将我们生活中的实际问题转换成计算机能理解的形式: 4.用户通过人机交 ...

  7. C#-1-2-C#基础

    1-注释符 1).单行注释符:// 2).多行注释符:/**/ 3).文档注释符:// 2-常用快捷键 3-变量类型 4-转义字符 5-语句 1.将相应内容打印到控制台:Console.WriteLi ...

  8. servlet中生成验证码

    在servlet中生成验证码 package login; import java.awt.Color; import java.awt.Graphics; import java.awt.image ...

  9. 运维自动化工具ansible

    企业级自动化运维工具应用实战ansible 公司计划在年底做一次大型市场促销活动,全面冲刺下交易额,为明年的上市做准备.公司要求各业务组对年底大促做准备,运维部要求所有业务容量进行三倍的扩容,并搭建出 ...

  10. 20170811 JQuery基础知识学习记录(一)

    基本写法 $(selector).action() $(this).hide() - 隐藏当前元素 $("p").hide() - 隐藏所有 <p> 元素 $(&quo ...