zoukankan      html  css  js  c++  java
  • RabbitMQ持久化

    我们知道,如果消息接收端挂了,消息会保存在队列里。下次接收端启动就会接收到消息。

    如果RabbitMQ挂了怎么办呢?这时候需要将消息持久化到硬盘

    消息发送端:producer

    ...........
    # 建立管道
    channel = connection.channel()
    # 声明队列 1、加上durable=True进行队列持久化。两边都要加(当RabbitMQ服务down了之后)
    channel.queue_declare(queue="q1",durable=True)
    # 发消息
    channel.basic_publish(exchange='',
                          routing_key='q1',
                          body='everything is just beginning!',
                          # 3、加上这句话,对消息进行持久化,只需要在发送方写(RabbitMQ服务down了之后)
                          properties=pika.BasicProperties(delivery_mode=2))
    .......

    消息接收端:consumer

    .........
    # 建管道
    channel = connection.channel()
    # 声明队列  2、加上durable=True进行队列持久化
    channel.queue_declare(queue='q1', durable=True)
    
    def callback(ch, method, properties, body):
        print("--->:",ch,properties)
        time.sleep(10)
        print("received: ", body)
        ch.basic_ack(delivery_tag=method.delivery_tag)
    ............

    这样改动,当RabbitMQ挂了之后可以对消息队列和里面的消息进行持久化。

  • 相关阅读:
    sqlnet设置网络传输加密
    临时表处理办法
    分布式事务2PC_PENDING异常处理
    统计信息收集百分比和并行改变
    dataguard丢失归档日志处理
    patch 28729262
    Cardinality
    统计信息不准导致sql性能下降
    子查询展开
    ogg 单表拆分合并进程
  • 原文地址:https://www.cnblogs.com/staff/p/9927850.html
Copyright © 2011-2022 走看看