python rabbitmq callback 传参数_python 操作RabbitMq详解

本文详细介绍了RabbitMQ的基本概念和应用场景,包括生产者和消费者的使用示例,以及如何实现消息的持久化。同时,文章还探讨了RabbitMQ的发布与订阅模式,包括fanout、direct和topicd三种工作模式的实现方法。
摘要由CSDN通过智能技术生成

一、简介:

RabbitMq 是实现了高级消息队列协议(AMQP)的开源消息代理中间件。消息队列是一种应用程序对应用程序的通行方式,应用程序通过写消息,将消息传递于队列,由另一应用程序读取 完成通信。而作为中间件的 RabbitMq 无疑是目前最流行的消息队列之一。

RabbitMq 应用场景广泛:

系统的高可用:日常生活当中各种商城秒杀,高流量,高并发的场景。当服务器接收到如此大量请求处理业务时,有宕机的风险。某些业务可能极其复杂,但这部分不是高时效性,不需要立即反馈给用户,我们可以将这部分处理请求抛给队列,让程序后置去处理,减轻服务器在高并发场景下的压力。

分布式系统,集成系统,子系统之间的对接,以及架构设计中常常需要考虑消息队列的应用。

二、RabbitMq 生产和消费

生产者(producter):队列消息的产生者,负责生产消息,并将消息传入队列

48304ba5e6f9fe08f3fa1abda7d326ab.png

import pika

import json

credentials = pika.PlainCredentials('shampoo', '123456') # mq用户名和密码

# 虚拟队列需要指定参数 virtual_host,如果是默认的可以不填。

connection = pika.BlockingConnection(pika.ConnectionParameters(host = '10.1.62.170',port = 5672,virtual_host = '/',credentials = credentials))

channel=connection.channel()

# 声明消息队列,消息将在这个队列传递,如不存在,则创建

result = channel.queue_declare(queue = 'python-test')

for i in range(10):

message=json.dumps({'OrderId':"1000%s"%i})

# 向队列插入数值 routing_key是队列名

channel.basic_publish(exchange = '',routing_key = 'python-test',body = message)

print(message)

connection.close()

48304ba5e6f9fe08f3fa1abda7d326ab.png

消费者(consumer):队列消息的接收者,负责 接收并处理 消息队列中的消息

48304ba5e6f9fe08f3fa1abda7d326ab.png

import pika

credentials = pika.PlainCredentials('shampoo', '123456')

connection = pika.BlockingConnection(pika.ConnectionParameters(host = '10.1.62.170',port = 5672,virtual_host = '/',credentials = credentials))

channel = connection.channel()

# 申明消息队列,消息在这个队列传递,如果不存在,则创建队列

channel.queue_declare(queue = 'python-test', durable = False)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值