RabbitMQ消息持久化:就是将队列中的消息永久的存放在队列中。
 
处理方案:
# 在实例化时加入durable=True来确认消息的实例化,客户端服务端都要写
channel.queue_declare(queue='hello1',durable=True)
注:只持久化了队列,并没有持久化消息。
 
# 消息持久话,在channel.basic_publish加入参数
properties = pika.BasicProperties(delivery_mode = 2,)
注:pika.BasicProperties下可以自定以参数,delivery_mode = 2是默认的。
 
 
send端 发送消息后重启rabbitmq服务
#!/usr/bin/env python
import pika # 通过实例创建socket
connection = pika.BlockingConnection(
pika.ConnectionParameters('localhost')
) # 声明一个管道/在管道内发消息
channel = connection.channel() # 管道内,声明一个队列,queue=queue的名字
# durable=True持久话队列
channel.queue_declare(queue='hello10',durable=True) # routing_key = queue的名字
# body = 消息内容
# properties = pika.BasicProperties 持久话参数,可在()加入定义参数
# delivery_mode =2 持久化消息
# 一个消息不能直接发送到队列,它总是需要经过一个exchange。
channel.basic_publish(exchange='',
routing_key='hello10',
body='Hello World!',
properties = pika.BasicProperties(
delivery_mode = 2,)
)
print(" [x] Sent 'Hello World!'") # 关闭队列
connection.close()
recv端
#_*_coding:utf-8_*_
__author__ = 'Alex Li'
import pika,time # 实例话创建socket
connection = pika.BlockingConnection(
pika.ConnectionParameters('localhost')) # 声明一个管道/在管道内发消息
channel = connection.channel() # 为什么再次声明queue名字:如果消费者先运行了,没有声明queue就会报错
# 如果想要防止报错发生,就要定义queue。
#
# 管道内,声明一个队列,queue=queue的名字
# durable=True持久话队列
channel.queue_declare(queue='hello10',durable=True) #回调函数
# ch 管道内存对象地址
# method 消息发给哪个queue
# body = 消息内容
def callback(ch, method, properties, body):
print(" [x] Received %r" % body)
#time.sleep(10)
# 消息处理完后会向生产端发送确认指令
ch.basic_ack(delivery_tag=method.delivery_tag) # 消费消息
# callback 如果收到消息,就调用callback函数来处理消息
# queue 管道内的队列名字
# no_ack = True 这条消息出没处理完都不会给服务端发确认
channel.basic_consume(
callback,
queue='hello10',) print(' [*] Waiting for messages. To exit press CTRL+C') # 启动后一直运行,没有数据会等待..
channel.start_consuming()

Python RabbitMQ消息持久化的更多相关文章

  1. rabbitmq 消息持久化

    rabbitmq 消息持久化 2016-02-18 11:19 224人阅读 评论(0) 收藏 举报  分类: 综合(15)  版权声明:本文为博主原创文章,未经博主允许不得转载. 二: 任务分发 & ...

  2. Python RabbitMQ消息队列

    python内的队列queue 线程 queue:不同线程交互,不能夸进程 进程 queue:只能用于父进程与子进程,或者同一父进程下的多个子进程,进行交互 注:不同的两个独立进程是不能交互的.   ...

  3. Python RabbitMQ 消息队列

    RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. MQ全称为Message Queue, 消息队列(MQ)是一种应用程序 ...

  4. rabbitmq 消息持久化之receive and send

    二: 任务分发 &消息持久化   启用多个接收端的时候如果某一个receive 关闭要保证消息有反馈是否收到   send端 #-*- coding: UTF-8 -*-import pika ...

  5. Rabbitmq消息持久化

    1.交换机持久化设置 exchange 持久化,在声明时指定 durable未true 2.队列持久化设置 queue 持久化,在声明时指定 durable 为true 3.消息持久化设置 Deliv ...

  6. Python RabbitMQ消息分发轮询

    1.收消息:一对多,默认依次轮询的发给每个消费端. 2.消息确认:默认RabbitMQ不会设置no_ack=Ture,意思是,当生产者给消费者发送发送消息时,消费者处理这个消息,处理完后会手动确认发送 ...

  7. RabbitMQ原理与相关操作(三)消息持久化

    现在聊一下RabbitMQ消息持久化: 问题及方案描述 1.当有多个消费者同时收取消息,且每个消费者在接收消息的同时,还要处理其它的事情,且会消耗很长的时间.在此过程中可能会出现一些意外,比如消息接收 ...

  8. Python操作rabbitmq消息队列持久化

    消息队列持久化 Python操作rabbit消息队列的持久化,如下: # 创建一个名为balance的队列,对queue进行durable持久化设为True(持久化第一步)channel.queue_ ...

  9. 【python】-- RabbitMQ 队列消息持久化、消息公平分发

    RabbitMQ 队列消息持久化 假如消息队列test里面还有消息等待消费者(consumers)去接收,但是这个时候服务器端宕机了,这个时候消息是否还在? 1.队列消息非持久化 服务端(produc ...

随机推荐

  1. 11.9luffycity(4)

    2018-11-9 17:57:09 明天开始自己独立写luffy部分表的接口, 越努力,越幸运!永远不要高估自己! 明天后天先不想下看视频,把接口做完,然后整理一下笔记,温故而习之,可以为师啊! 知 ...

  2. HDU - 2043密码 水题

    密码 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submissi ...

  3. Nestjs 设置静态文件,public

    Docs: https://docs.nestjs.com/techniques/mvc main.js import { NestFactory } from '@nestjs/core'; imp ...

  4. laravel的csrf token 的了解及使用

    之前在项目中因为没有弄清楚csrf token的使用,导致发请求的话,一直请求失败,今天就一起来看一下csrf的一些东西. 1.Cross-site request forgery 跨站请求伪造,也被 ...

  5. CPanel/服务器文件及目录

    cPanel服务器默认的各主要目录及配置文件的路径.cPanel服务器很多配置文件的路径和通常情况下安装LAMP的不同,另外还有很多是属于cPanel面板自己的配置文件. 目录 1 Apache 2  ...

  6. juqery 给本身的class加上一个class 或也可以实现关注商品,取消关注商品

    $("#goods1").on("click",".ICON-fen-LOVE",function(){ var $this = $(thi ...

  7. 关于ie浏览器信任站点的代码

    1检测用户当前浏览器是否将域名的ip添加信任站点 js代码 //域名ip的获取 var hostname = window.location.hostname;       var WshShell ...

  8. ubuntu16.04安装libzip库

    sudo apt install libzip-dev

  9. JVM—内存溢出、OutOfMemoryError、StackOverflowError

    学习jvm时看到几篇非常好的系列文章,转载了: <深入理解Java虚拟机>学习小记一之自动内存管理机制(一) http://my.oschina.net/linuxfelix/blog/1 ...

  10. MySQL 连接数相关参数设置

    当我们的数据库服务器遇到如下的错误:ERROR: Too many connections 一种可能性就是我们的压力确实很大,需要增加服务器硬件资源或者增加数据库服务器.但是大多数情况下是我们的连接数 ...