上海做展会的网站都有哪些,银川网站建设哪家便宜,html网页弹窗代码,做贸易 公司网站放哪里引言
RabbitMQ是一个流行的开源消息代理#xff0c;用于在分布式系统中实现异步消息传递。它基于Erlang语言编写#xff0c;具有高可用性和可伸缩性。在本文中#xff0c;我们将探讨如何在Python中使用RabbitMQ进行消息发送和消费。
安装RabbitMQ
在 Ubuntu 上安装 Rabbi…引言
RabbitMQ是一个流行的开源消息代理用于在分布式系统中实现异步消息传递。它基于Erlang语言编写具有高可用性和可伸缩性。在本文中我们将探讨如何在Python中使用RabbitMQ进行消息发送和消费。
安装RabbitMQ
在 Ubuntu 上安装 RabbitMQ 可以通过多种方式完成包括使用包管理器、Docker 容器或从源代码编译。以下是最简单和最常见的方法使用包管理器进行安装。
安装 Erlang: 添加 PPA 之后可以安装 Erlang。
sudo apt install erlang安装 RabbitMQ: 在 Erlang 安装完成后可以安装 RabbitMQ。
sudo apt install rabbitmq-server启动 RabbitMQ: 安装完成后可以启动 RabbitMQ 服务。
sudo systemctl start rabbitmq-server设置 RabbitMQ 用户: 为了安全起见应该创建一个 RabbitMQ 用户。
sudo rabbitmqctl add_user your_username your_password
sudo rabbitmqctl set_permissions -p / your_username .* .* .*
sudo rabbitmqctl set_user_tags your_username administrator
sudo rabbitmqctl set_permissions -p / your_username .* .* .*在这里your_username 是想要创建的用户名your_password 是该用户的密码。
检查 RabbitMQ 状态: 使用以下命令检查 RabbitMQ 服务状态。
sudo systemctl status rabbitmq-server配置 RabbitMQ 防火墙: 根据您的网络配置可能需要配置防火墙规则以允许外部客户端访问 RabbitMQ。
sudo ufw allow from any to any port 5672 proto tcp
sudo ufw allow from any to any port 15672 proto tcp停止 RabbitMQ: 如果想要停止 RabbitMQ 服务可以使用以下命令。
sudo systemctl stop rabbitmq-server查看 RabbitMQ 版本: 使用以下命令查看已安装的 RabbitMQ 版本。
sudo rabbitmq-server -v安装完成后可以通过访问 http://localhost:15672 来访问 RabbitMQ 管理界面。如果已经设置了用户将需要使用创建的用户名和密码登录。请注意RabbitMQ 服务器配置和安全性是复杂的主题上述步骤提供了基本的安装和配置指南。根据具体需求可能需要进行更详细的配置。
安装pika
pika 是一个用于 RabbitMQ 的 Python 客户端库它允许创建和控制 RabbitMQ 队列、交换器、绑定和消息。安装也非常简单安装完成后就可以在 Python 代码中导入 pika 库并使用它来与 RabbitMQ 交互。
pip install pika发送消息
首先来看一下如何发送消息到RabbitMQ队列。以下代码片段展示了如何连接到RabbitMQ服务器声明一个队列并发布一个消息到该队列。
#!/usr/bin/env python
import pikaparams pika.ConnectionParameters(hostlocalhost, heartbeat3600, blocked_connection_timeout300)
connection pika.BlockingConnection(pika.ConnectionParameters(hostlocalhost))
channel connection.channel()
channel.queue_declare(queuehello)
channel.basic_publish(exchange, routing_keyhello, bodyHello World!)
print( [x] Sent Hello World!)
connection.close()创建一个ConnectionParameters实例定义了与RabbitMQ服务器建立连接所需的参数 hostlocalhost指定RabbitMQ服务器的主机名这里是本地主机。heartbeat3600心跳间隔单位为秒用于保持连接的活跃性。blocked_connection_timeout300如果连接被阻塞这个参数定义了连接超时的时间单位为秒。 connection pika.BlockingConnection(...)使用pika.BlockingConnection创建一个到RabbitMQ的阻塞连接。这意味着连接操作会等待直到成功建立连接。channel connection.channel()创建一个新的通信信道。在RabbitMQ中信道是进行消息传递的通道。channel.queue_declare(queuehello)声明一个名为hello的队列。如果该队列不存在RabbitMQ会创建它。channel.basic_publish(exchange, routing_keyhello, bodyHello World!)发布发送一条消息到队列。参数说明 exchange交换机名称这里为空字符串表示使用默认的交换机。routing_key路由键这里与队列名相同表示消息将直接发送到hello队列。body消息体这里是字符串Hello World!。 消费消息
接下来看一下如何从RabbitMQ队列中消费消息。以下代码片段展示了如何连接到RabbitMQ服务器声明一个队列并使用回调函数来处理收到的消息。
#!/usr/bin/env python
import pika, sys, osdef main():connection pika.BlockingConnection(pika.ConnectionParameters(hostlocalhost))channel connection.channel()channel.queue_declare(queuehello)def callback(ch, method, properties, body):print( [x] Received %r % body)channel.basic_consume(queuehello, on_message_callbackcallback, auto_ackTrue)print( [*] Waiting for messages. To exit press CTRLC)channel.start_consuming()if __name__ __main__:try:main()except KeyboardInterrupt:print(Interrupted)try:sys.exit(0)except SystemExit:os._exit(0)定义一个名为callback的函数它将作为消费消息时的回调函数。当消息到达时这个函数会被调用并打印出消息体。channel.basic_consume(queuehello, on_message_callbackcallback, auto_ackTrue)开始消费hello队列中的消息。on_message_callback参数指定了当消息到达时调用的回调函数auto_ackTrue表示自动确认消息。 结论
本文介绍了如何在 Python 中使用 RabbitMQ 进行消息发送和消费。RabbitMQ 是异步消息传递的强有力工具适用于构建可靠、可伸缩的分布式系统。随着微服务架构的流行RabbitMQ 在现代软件开发中的作用越来越重要。