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. Page3:组合系统状态空间输入输出描述、矩阵指数函数性质[Linear System Theory]

    内容包含组合系统的状态空间描述以及输入输出描述,零输入响应的概念以及矩阵指数函数的性质

  2. [qemu][cloud][centos][ovs][sdn] centos7安装高版本的qemu 以及 virtio/vhost/vhost-user咋回事

    因为要搭建ovs-dpdk,所以需要vhost-user的qemu centos默认的qemu与qemu-kvm都不支持vhost-user,qemu最高版本是2.0.0, qemu-kvm最高版本是 ...

  3. [daily] SNAT和DNAT

    SNAT,DNAT,MASQUERADE都是NAT MASQUERADE是SNAT的一个特例 SNAT是指在数据包从网卡发送出去的时候,把数据包中的源地址部分替换为指定的IP,这样,接收方就认为数据包 ...

  4. 转:el表达式获取map对象的内容 & js中使用el表达式 & js 中使用jstl 实现 session.removeattribute

    原文链接: ①EL表达式取Map,List值的总结 ②在jsp中使用el表达式通过键获得后台的一个map<Long,String>的值 ③在javascript中使用el表达式(有图有真相 ...

  5. 基于Gogs+Drone搭建的私有CI/CD平台

    请移步 基于Gogs+Drone搭建的私有CI/CD平台

  6. ES6新特性三: Generator(生成器)函数详解

    本文实例讲述了ES6新特性三: Generator(生成器)函数.分享给大家供大家参考,具体如下: 1. 简介 ① 理解:可以把它理解成一个函数的内部状态的遍历器,每调用一次,函数的内部状态发生一次改 ...

  7. 那些年读过的书《Java并发编程实战》一、构建线程安全类和并发应用程序的基础

    1.线程安全的本质和线程安全的定义 (1)线程安全的本质 并发环境中,当多个线程同时操作对象状态时,如果没有统一的状态访问同步或者协同机制,不同的线程调度方式和不同的线程执行次序就会产生不同的不正确的 ...

  8. fiddler 实现代理的操作

  9. centos who命令 查看当前登录系统用户信息

    who 显示当前登录系统的用户,但w显示的更为详细 默认输出 [root@mysql ~]# who //用户名.登录终端.登录时间 root pts/ -- : (192.168.0.110) -a ...

  10. pycharm快捷键帮助文档Keymap Reference

    前面我们已经安装了pycharm,为了提升效率,我们一般会用到快捷键操作,pycharm有哪些快捷键呢?Pycharm中打开Help->Keymap Reference可查看默认快捷键帮助文档, ...