RabbitMQ的持久化
RabbitMQ的持久化主要体现在三个方面,即交换机持久化,队列持久化及消息持久化
注意,因公司使用php-amqplib来实现RabbitMQ,故之后举例说明的代码均使用的php-amqplib,而非php的amqp扩展
1、交换机持久化
交换机的持久化其实就是相当于将交换机的属性在服务器内部保存,当MQ的服务器发生意外或关闭之后,重启RabbitMQ时不需要重新手动或执行代码去建立交换机,交换机会自动建立,相当于一直存在。
创建交换机的方法为exchange_declare($exhcange_name,$type,$passive,$durable,$auto_delete);,当$durable这个参数为true时,该交换机就会被存储到内存里,当RabbitMQ服务器重启时,会将该交换机自动重新创建,如果为false,重启后该交换机则会被从交换机队列里删掉。

2、队列持久化
队列持久化类似于交换机持久化,创建队列方法queue_declare中也有一个参数是$durable,也代表着RabbitMQ服务器重启时,是否自动创建队列,图中参数注释与方法中的参数(除队列名外)顺序一一对应

3、消息持久化
众所周知,RabbitMQ的消息是依附于队列存在的,所以想要消息持久化,那么前提是队列也要持久化。
消息的持久化与交换机持久化与队列持久化有所不同,消息的持久化在于创建消息的时候,加一个持久化消息的属性,创建消息的方法是new AMQPMessage($data,$properties),其中$properties是个数组,里面可以设置对消息的各种属性,如持久化,优先级等属性。持久化的key值为"delivery_mode",当"delivery_mode"为1时表示消息不持久化,为2时则表示消息持久化,且把消息存在磁盘里

RabbitMQ的持久化的更多相关文章
- rabbitmq 消息持久化
rabbitmq 消息持久化 2016-02-18 11:19 224人阅读 评论(0) 收藏 举报 分类: 综合(15) 版权声明:本文为博主原创文章,未经博主允许不得转载. 二: 任务分发 & ...
- Python RabbitMQ消息持久化
RabbitMQ消息持久化:就是将队列中的消息永久的存放在队列中. 处理方案: # 在实例化时加入durable=True来确认消息的实例化,客户端服务端都要写 channel.queue_dec ...
- RabbitMQ的持久化机制
一.问题的引出 RabbitMQ的一大特色是消息的可靠性,那么它是如何保证消息可靠性的呢?——消息持久化.为了保证RabbitMQ在退出,服务重启或者crash等异常情况下,也不会丢失消息,我们可以将 ...
- RabbitMQ的持久化(六)
RabbitMQ的持久化主要体现在三个方面,即交换机持久化,队列持久化及消息持久化 注意,因公司使用php-amqplib来实现RabbitMQ,故之后举例说明的代码均使用的php-amqplib,而 ...
- rabbitmq (二) 持久化
默认情况下rabbitmq 是根据消费者多少依次投递,投递后就删除消息. 消息不会重复投递给不同的消费者. 消费者如果遇到长时间的任务,会执行完一个消息之后再执行下一个消息, 消费者持久化: 如果一个 ...
- rabbitmq 消息持久化之receive and send
二: 任务分发 &消息持久化 启用多个接收端的时候如果某一个receive 关闭要保证消息有反馈是否收到 send端 #-*- coding: UTF-8 -*-import pika ...
- Rabbitmq消息持久化
1.交换机持久化设置 exchange 持久化,在声明时指定 durable未true 2.队列持久化设置 queue 持久化,在声明时指定 durable 为true 3.消息持久化设置 Deliv ...
- 删除rabbitmq中持久化的队列和数据
在windows中的rabbitmq安装目录中的/sbin目录下: rabbitmqctl.bat stop_app rabbitmqctl.bat reset rabbitmqctl start_a ...
- RabbitMQ原理与相关操作(三)消息持久化
现在聊一下RabbitMQ消息持久化: 问题及方案描述 1.当有多个消费者同时收取消息,且每个消费者在接收消息的同时,还要处理其它的事情,且会消耗很长的时间.在此过程中可能会出现一些意外,比如消息接收 ...
随机推荐
- Qt编写安防视频监控系统10-视频轮询
一.前言 视频轮询在视频监控系统中是一个基础的核心功能,尤其是上了大屏以后,这个功能是必须的,根据预先设定的轮询间隔逐个加载视频到预先设定的通道画面数中,轮询间隔.轮询画面数.轮询采用的码流类型(主码 ...
- SecureCRT 添加Mac Localhost
1.启动sshd服务: sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist 停止sshd服务的方法: sudo launchc ...
- GCE 部署 ELK 7.1可视化分析 nginx
目录 一.准备 1.1.服务器环境准备 二.安装 ES 2.1.遇到小问题 三.安装 Kibana 四.安装 Logstash 一.准备 我这边有一个网站放在了 Google VM 上面,所以打算在购 ...
- 如果使用 Python3(Flask) 一步一步模拟一个网页微信客户端
目录 Web Weixin Pipeline 一.获取登录的二维码 1.1.打开浏览器输入下面网址 1.2.梳理原理 1.3.代码实现 1.4.启动测试 二.扫码成功 2.1.扫码状态 2.2.原理状 ...
- 在linux服务器以及客户端实现公钥免密登录
每次登录服务器都要输入密码,这点比较麻烦.使用ssh公钥登录机制可以直接登录,避免每次都输入密码的烦恼. 所谓ssh公钥登录机制即是:客户端电脑client产生加密用的公钥id_rsa.pub与私钥i ...
- 【miscellaneous】使用Google语音识别引擎(Google Speech API)[3月5日修改]
原文:http://blog.csdn.net/dlangu0393/article/details/7214728#comments 近期重写本文,暂时禁止评论. 最近在使用Qt编写一个客户端程序的 ...
- Linux下安装xrdp
ubuntu 打开终端,依次输入如下命令: sudo apt-get install xrdp sudo apt-get install vnc4server tightvncserver cd /h ...
- String、StringBuilder、StringBuffer的爱恨情仇
第三阶段 JAVA常见对象的学习 StringBuffer和StringBuilder类 (一) StringBuffer类的概述 (1) 基本概述 下文以StringBuffer为例 前面我们用字符 ...
- cmake 简单build和删除
mkdir build cd build cmake .. make
- 坦克大战--Java类型
写在前面 Java编译器下载教程(真的良心):https://blog.csdn.net/Haidaiya/article/details/81230636 本项目为本人独自制作,请各位尊 ...