安装环境
RabbitMQ依赖Erlang,需要分别下载:
RabbitMQ:https://www.rabbitmq.com/install-windows.html
Erlang:https://www.erlang.org/downloads
RabbitMQ不同版本依赖的Erlang版本有所不同,目前RabbitMQ最新版本是3.8.1,推荐使用Erlang 22.1,具体的依赖关系见:https://www.rabbitmq.com/which-erlang.html。
安装后,RabbitMQ即以Windows服务的形式运行。
安装Python库
pip install pika
示例代码
1、produce.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import pika
import random
import settings
# 新建连接,rabbitmq安装在本地则hostname为'localhost'
parameters = pika.ConnectionParameters(settings.RabbitMQHostName)
connection = pika.BlockingConnection(parameters)
# 创建通道
channel = connection.channel()
# 声明一个队列,生产者和消费者都要声明一个相同的队列,用来防止万一某一方挂了,另一方能正常运行
channel.queue_declare(queue=settings.QueueName)
number = random.randint(1, 1000)
body = 'hello world:%s' % number
# 交换机; 队列名,写明将消息发往哪个队列; 消息内容
# routing_key在使用匿名交换机的时候才需要指定,表示发送到哪个队列
channel.basic_publish(exchange='', routing_key=settings.QueueName, body=body)
print (' [x] Sent %s' % body)
connection.close()
2、customer.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import pika
import settings
parameters = pika.ConnectionParameters(settings.RabbitMQHostName)
connection = pika.BlockingConnection(parameters)
# 创建通道
channel = connection.channel()
channel.queue_declare(queue=settings.QueueName)
def callback(ch, method, properties, body):
print('[x] Received %r' % (body,))
# 告诉rabbitmq使用callback来接收信息
channel.basic_consume(queue = settings.QueueName, on_message_callback = callback)
# 开始接收信息,并进入阻塞状态,队列里有信息才会调用callback进行处理,按ctrl+c退出
print(' [*] Waiting for messages. To exit press CTRL+C')
channel.start_consuming()
3、settings.py
RabbitMQHostName = 'localhost'
QueueName = 'testQueue'
测试
启动consumer.py后,每次启动produce.py,消息都可正常推送。
相关链接
python中RabbitMQ的使用(安装和简单教程):https://www.cnblogs.com/jfl-xx/p/7324285.html
rabbitmq官方的六种工作模式:https://blog.csdn.net/qq_33040219/article/details/82383127
相关软件
rabbitmq-server-3.8.1 链接:https://pan.baidu.com/s/16tRHnlvoLaasmoY1lrlxdA 提取码:qheq
Erlang_otp_win64_22.1 链接:https://pan.baidu.com/s/1BJauT5WCAVjgUQ32Yr5NGA 提取码:xjbf