博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python-RabbitMQ(持久化)
阅读量:6449 次
发布时间:2019-06-23

本文共 1805 字,大约阅读时间需要 6 分钟。

生产者:

import pikaconnection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))channel = connection.channel()  # 声明一个管道,在管道里发消息# 声明queuechannel.queue_declare(queue='hello', durable=True)  # 在管道里还得声明一个队列# durable只是把队列持久化,消息不持久化channel.basic_publish(exchange='',                      routing_key='hello',  # 就是列队queue名字                      body='Hello World' , # 消息内容                      properties=pika.BasicProperties(                            delivery_mode=2,#消息持久化如果队列没有设置durable=True的话消息是没有办法持久化的                      )                      )print(" [x] Sent 'Hello World!'")connection.close()  # 不用关闭管道,关闭连接就行

 

 消费者:

import pika# 建立到达RabbitMQ Server的connection# 此处RabbitMQ Server位于本机-localhostconnection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))channel = connection.channel()# 声明queue,确认要从中接收message的queue# queue_declare函数是幂等的,可运行多次,但只会创建一次# 若可以确信queue是已存在的,则此处可省略该声明,如producer已经生成了该queue# 但在producer和consumer中重复声明queue是一个好的习惯channel.queue_declare(queue='hello',durable=True)print(' [*] Waiting for messages. To exit press CTRL+C')channel.basic_qos(prefetch_count=1)#如果有一个消息,服务器就不发,没消息就发# 定义回调函数# 一旦从queue中接收到一个message回调函数将被调用# ch:channel# method:# properties:# body:messagedef callback(ch, method, properties, body):    print(" [x] Received %r" % body)    ch.basic_ack(delivery_tag=method.delivery_tag)#执行完后确认,client执行完后给rabbitmq返回的一个标识,收到这个标识后rabbitmq认为这个消息处理完了,不会在重复发送给其他client继续执行# 从queue接收message的参数设置# 包括从哪个queue接收message,用于处理message的callback,是否要确认message# 默认情况下是要对消息进行确认的,以防止消息丢失。# 此处将no_ack明确指明为True,不对消息进行确认。channel.basic_consume(callback,                      queue="hello",                     #no_ack=True#不对消息确认                       )# 开始循环从queue中接收message并使用callback进行处理channel.start_consuming()

 

转载于:https://www.cnblogs.com/fuyuteng/p/9251128.html

你可能感兴趣的文章
用设计模式去掉没必要的状态变量 —— 状态模式
查看>>
linux安装elasticsearch及遇到的各种问题
查看>>
健忘的正则
查看>>
[转]CMake快速入门教程:实战
查看>>
IntelliJ IDEA创建JavaWeb工程及配置Tomcat部署
查看>>
Markdown用法
查看>>
求最大值及其下标
查看>>
Request header is too large
查看>>
轮播插件swiper.js?
查看>>
网路流24题总结
查看>>
BZOJ-3732 Network 图论 最小生成树 倍增
查看>>
python之文件操作
查看>>
15 个 Android 通用流行框架大全
查看>>
Entity Framwork CodeFirst 学习笔记五:数据库映射的默认配置和设置
查看>>
ant 执行java文件,java文件中含中文,显示乱码
查看>>
IE8兼容@media和mp4视频的解决方案
查看>>
第二周总结
查看>>
ASP.NET完整打包卸载更新攻略(By Installshield 2010)
查看>>
[120_移动开发Android]006_android开发之数据存储之sdcard访问
查看>>
[若有所悟]IT小兵总结IT人特点及挽留IT人才的九大策略
查看>>