• 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时则表示消息持久化,且把消息存在磁盘里

              

                 

  • 相关阅读:
    Wix Burn:如何将32位和64位的安装包制作成一个安装包
    禁止32位安装包运行在64位操作系统上
    图片校验码
    Oracle建表命令
    npm系列
    git使用
    syslog
    hibernate配置enum枚举属性
    httpClient发送post请求
    修改ubuntu系统语言
  • 原文地址:https://www.cnblogs.com/brady-wang/p/11293901.html
Copyright © 2020-2023  润新知