Python运用RabbitMQ学习日志
竞品分析
消息队列 | 客户端语言 | 优点 | 缺点 |
---|---|---|---|
RocketMQ | Java、.NET、C++ | 支持事务 | 客户端支持较少 |
Kafka | Java | 无限消息堆积、持久化速度快。 | 没有界面,不利于直观的消息监控。可靠性低,适用于日志等对数据可靠性低的场景。不支持分布式事务消息 |
RabbitMQ | Java、Python、.Net、Ruby、PHP、C、C++、Go... | 支持事务、客户端支持广泛、自带监控界面。 | 由小众语言编写、报错信息难以琢磨。 |
以上三个消息队列各方面性能都比较客观,对于普通量级的业务而言,绝对够用,所以不对性能做详细对别。感兴趣的可以在这里查看网友作出的性能对比详情。https://blog.csdn.net/yunfeng482/article/details/72856762
最终选取 【Python运用RabbitMQ学习日志】综合自身使用的Python而言,最终选取RabbitMQ。其缺点从单纯的使用来考虑,可以忽略,毕竟不会对其进行改造扩展。
环境搭建 1. 安装rabbitmq
docker pull rabbitmq2. 启动rabbitmq
docker run -d -p 8080:15672 -p 5672:5672 rabbitmq3. 消息发送代码
# sent.py
import pikarabbitmq_host = "127.0.0.1"
rabbitmq_port = 5672
queue_name = "test_queue_name"connection = pika.BlockingConnection(
pika.ConnectionParameters(host=rabbitmq_host, port=rabbitmq_port)
)channel = connection.channel()
channel.queue_declare(queue=queue_name)channel.basic_publish(
exchange='',
routing_key=queue_name,
body='hello word'
)print("Sent 'Hello World!' to queue %s success" % queue_name)connection.close()
4. 消息接收代码
# receive.pyimport pikarabbitmq_host = "127.0.0.1"
rabbitmq_port = 5672
queue_name = "test_queue_name"connection = pika.BlockingConnection(
pika.ConnectionParameters(host=rabbitmq_host, port=rabbitmq_port)
)channel = connection.channel()channel.queue_declare(queue=queue_name)def received_msg_callback(ch, method, properties, body):
print("Received msg '%r'" % body)channel.basic_consume(received_msg_callback, queue=queue_name, no_ack=True)print('Waiting for messages. To exit press CTRL+C')
channel.start_consuming()
5. 运行
python3 sent.py
python3 receive.py
推荐阅读
- python学习之|python学习之 实现QQ自动发送消息
- 逻辑回归的理解与python示例
- python自定义封装带颜色的logging模块
- 【Leetcode/Python】001-Two|【Leetcode/Python】001-Two Sum
- Python基础|Python基础 - 练习1
- Python爬虫|Python爬虫 --- 1.4 正则表达式(re库)
- Python(pathlib模块)
- python青少年编程比赛_第十一届蓝桥杯大赛青少年创意编程组比赛细则
- Python数据分析(一)(Matplotlib使用)
- Python|Python 9.20