前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python之Rabbitmq发送消息

Python之Rabbitmq发送消息

作者头像
Wu_Candy
发布2022-07-04 16:54:15
1.1K0
发布2022-07-04 16:54:15
举报
文章被收录于专栏:无量测试之道

1

什么是Rabbitmq?


Rabbitmq是一个在AMQP基础上完整的,可复用的企业消息系统。他遵循Mozilla Public License开源协议。

MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消 息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。

通俗点来讲:把Rabbitmq想象成一个邮局,当你把你想要发布的邮件放在邮箱中时,你可以确定邮差先生最终将邮件发送给你的收件人。在这个比喻中,Rabbitmq是邮政信箱,邮局和邮递员。

消息发送的示意图:

2

如何搭建一个Rabbitmq服务?


step1:检索rabbitmq 镜像 docker search rabbitmq

step2:下载rabbitmq 镜像 docker pull rabbitmq:management

step3: 启动rabbitmq 容器 docker run -d -e RABBITMQ_DEFAULT_USER=guest -e RABBITMQ_DEFAULT_PASS=guest -p 15672:15672 -p 5672:5672 rabbitmq:management

step4: 登录浏览器查看mq服务是否正常

3

创建一个虚拟主机


创建一个虚拟主机( virtual hosts,系统默认会创建一个/) 并且给guest 账号赋上权限(此步骤可省略)

如果需要手动创建的话,需要单独创建并且赋权限给guest账号。

4

Rabbitmq 发消息简单模式


step1:获取Rabbitmq服务的连接 step2:创建一个信道 step3:声明一个队列 step4:向列表存放消息 step5:关闭连接

具体代码如下:

代码语言:javascript
复制
import json
import pika
import datetime

#生成消息入口处
def get_message():
    for i in range(10): #生成10条消息
        message=json.dumps({'id': "10000%s" % i, "amount": 100 * i,"name":"tony","createtime":str(datetime.datetime.now())})
        producter(message)

#消息生产者
 
def producter(message):#消息生产者
    # 获取与rabbitmq 服务的连接,虚拟队列需要指定参数 virtual_host,如果是默认的可以不填(默认为/),也可以自己创建一个
    connection = pika.BlockingConnection(pika.ConnectionParameters(host='127.0.0.1', port=5672,credentials=pika.PlainCredentials('guest', 'guest')))
    #创建一个 AMQP 信道(Channel),建造一个大邮箱,隶属于这家邮局的邮箱
    channel = connection.channel()
    # 声明消息队列tester,消息将在这个队列传递,如不存在,则创建
    channel.queue_declare(queue='tester')
    # 向队列插入数值 routing_key的队列名为tester,body 就是放入的消息内容,exchange指定消息在哪个队列传递,这里是空的exchange但仍然能够发送消息到队列中,因为我们使用的是我们定义的空字符串“”exchange(默认的exchange)
    channel.basic_publish(exchange='', routing_key='tester', body=message)
    # 关闭连接
    connection.close()

if __name__=="__main__":
    get_message()#程序执行入口

5

检查mq中tester队列中是否产生了10条消息记录


如下截图所示:

友情提示:“无量测试之道”原创著作,欢迎关注交流,禁止第三方不显示文章来源时转载。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 无量测试之道 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档