RabbitMQ理论
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理论的更多相关文章
- RabbitMQ理论部分
概念 queue 队列 exchange 交换机 bind 绑定 channel 通道 一个发送消息流程包含上述四个概念.消息经过channel传递给exc ...
- RabbitMQ学习总结 第一篇:理论篇
目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...
- RabbitMQ 集群与网络分区(理论知识)
关于network partition网络设备故障导致的网络分裂.比如,存在A\B\C\D\E五个节点,A\B处于同一子网,B\C\D处于另外一子网,中间通过交换机相连.若两个子网间的交换机故障了即发 ...
- RabbitMQ基本理论
本节内容 一 RabbitMQ介绍 二 RabbitMQ安装配置 三 RabbitMQ的Python实现-pika 1. 生产者消费者 2. 工作队列 3. 持久化和公平分发 4. 发布与订阅 ...
- RabbitMQ 相关理论部分
集群配置方式 RabbitMQ可以通过三种方法来部署分布式集群系统,分别是:cluster,federation,shovel cluster: 不支持跨网段,用于同一个网段内的局域网 可以随意的动态 ...
- RabbitMQ入门-理论
目录 RabbitMQ简介 RabbitMQ原理简介 RabbitMQ安装 .NET Core 使用 RabbitMQ Hello World 工作队列 扇型交换机 直连交换机 主题交换机 远程过程调 ...
- RabbitMQ 高可用集群搭建及电商平台使用经验总结
面向EDA(事件驱动架构)的方式来设计你的消息 AMQP routing key的设计 RabbitMQ cluster搭建 Mirror queue policy设置 两个不错的RabbitMQ p ...
- RabbitMQ学习系列(四): 几种Exchange 模式
上一篇,讲了RabbitMQ的具体用法,可以看看这篇文章:RabbitMQ学习系列(三): C# 如何使用 RabbitMQ.今天说些理论的东西,Exchange 的几种模式. AMQP协议中的核心思 ...
- RabbitMQ原理与相关操作(三)消息持久化
现在聊一下RabbitMQ消息持久化: 问题及方案描述 1.当有多个消费者同时收取消息,且每个消费者在接收消息的同时,还要处理其它的事情,且会消耗很长的时间.在此过程中可能会出现一些意外,比如消息接收 ...
随机推荐
- 抽屉之Tornado实战(1)--分析与架构
抽屉之Tornado实战(1)--分析与架构 项目模拟地址:http://dig.chouti.com/ 知识点应用: AJAX 用于偷偷发请求 原生ajax jQuery ajax($.aj ...
- (转载)centos7启用端口
转载:原文地址:https://www.cnblogs.com/moxiaoan/p/5683743.html 1.firewalld的基本使用 启动: systemctl start firew ...
- nginx最基本操作
1.安装 yum install nginx 2.查看配置位置 nginx -t 3.查看nginx.conf,找到默认html配置路径 vi /etc/nginx/nginx.conf cd /us ...
- 洛谷P3041 视频游戏的连击Video Game Combos [USACO12JAN] AC自动机+dp
正解:AC自动机+dp 解题报告: 传送门! 算是个比较套路的AC自动机+dp趴,,, 显然就普普通通地设状态,普普通通地转移,大概就f[i][j]:长度为i匹配到j 唯一注意的是,要加上所有子串的贡 ...
- DMA驱动框架
框架入口源文件:dma.c (可根据入口源文件,再按着框架到内核走一遍) 内核版本:linux_2.6.22.6 硬件平台:JZ2440 以下是驱动框架: 以下是驱动代码 dma.c : #i ...
- 程序------>数据结构
一程序概念: 1.对身边的任何一个事物进行认知和分类,从而得到一些信息: 2.在得到的信息基础之上建立了概念模型: 3.根据概念模型将我们生活中的实际问题转换成计算机能理解的形式: 4.用户通过人机交 ...
- C#-1-2-C#基础
1-注释符 1).单行注释符:// 2).多行注释符:/**/ 3).文档注释符:// 2-常用快捷键 3-变量类型 4-转义字符 5-语句 1.将相应内容打印到控制台:Console.WriteLi ...
- servlet中生成验证码
在servlet中生成验证码 package login; import java.awt.Color; import java.awt.Graphics; import java.awt.image ...
- 运维自动化工具ansible
企业级自动化运维工具应用实战ansible 公司计划在年底做一次大型市场促销活动,全面冲刺下交易额,为明年的上市做准备.公司要求各业务组对年底大促做准备,运维部要求所有业务容量进行三倍的扩容,并搭建出 ...
- 20170811 JQuery基础知识学习记录(一)
基本写法 $(selector).action() $(this).hide() - 隐藏当前元素 $("p").hide() - 隐藏所有 <p> 元素 $(&quo ...