rabbitmq消息持久化
product.py
#!/usr/bin/python
#coding:utf-8
import pika
import random
import time
credentials = pika.PlainCredentials('rabbitadmin','xxxx')
parameters = pika.ConnectionParameters('x.x.x.x',5672,'/',credentials)
connection = pika.BlockingConnection(parameters)
channel = connection.channel()
channel.queue_declare(queue='first_queue',durable=True) ###durable只是queue持久化(不代表消息持久化)
i = 0
while i < 5000:
time.sleep(random.random())
a = '{} message'.format(i)
channel.basic_publish(exchange='',routing_key='first_queue',body=a,properties=pika.BasicProperties(delivery_mode=2,)) ##delivery_mode为2时,消息会保存到本地
i += 1
connection.close()
注意:
delivery_mode=2是一个常量设置
TRANSIENT_DELIVERY_MODE = 1
PERSISTENT_DELIVERY_MODE = 2
两个常量用以区分短暂消息和持久消息。在RabbitQM官网中规定了delivery_mode 1和2分别指定的消息类型。