Python操作RabbitMq详解

一、简介:

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

二、VirtualHost

RabbitMq的VirtualHost(虚拟消息服务器),每个VirtualHost相当于一个相对独立的RabbitMQ服务器;每个VirtualHost之间是相互隔离的,exchange、queue、message不能互通。

添加用户

在这里插入图片描述
下面给大家介绍权限也就是方框中的内容,

  1. 超级管理员(admin):可登录管理控制台,可查看所有的信息,并且可以对用户,策略(policy)进行操作
  2. 监控者(monitoring):可登陆管理控制台,同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)
  3. 策略制定者(policymaker):可登陆管理控制台
    拿数据库(用MySQL)来类比:RabbitMq相当于MySQL,RabbitMq中的VirtualHost就相当于MySQL中的一个库。
  4. 管理管理者(management):仅可登录管理控制台,无法看到节点信息,也无法对策略进行管理
  5. 其他:无法登录管理控制台,通常就是普通的生产者和消费者

三、RabbitMq的应用场景

  • 系统的高可用:日常生活当中各种商城秒杀,高流量、高并发的场景,当服务器接受到如此大量请求处理业务时,有宕机的风险,某些业务可能极其复杂,但这部分不是高时效性,不需要立即反馈给用户,我们可以将这部分处理请求抛给队列,让程序后置去处理,减轻服务器在高并发场景下的压力
  • 分布式系统,集成系统,子系统之间的对接,以及架构设计中常常需要考虑消息队列的应用

四、RabbitMq中的Connection和Channel

我们知道无论是生产者还是消费者,都需要RabbitMq Broker 建立连接,这个连接就是一条TCP连接,也就是Connection
一旦TCP连接建立起来,客户端紧接着就可以创建一个AMQP信道(Channel),每个信道都会被指派一个唯一的ID
信道是建立在Connection之上的虚拟连接,RabbitMq处理的每条AMQP指令都是通过信道完成的。

后续。。。。

五、RabbitMq生产者消费者模型

生产者(producter) 队列消息的产生者,复制生产消息,并将消息传入队列
生产者代码:

import pika
import json

credentials = pika.PlainCredentials('lvhua','123456')#mq用户名和密码,用于认证
#虚拟队列需要指定参数virtual_host,如果是默认的可以不填
connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost',port=5672,virtual_host='/',credentials=credentials))
channel = connection.channel()# 创建一个AMQP信道

#声明队列,并设置durable为True,为了避免rabbitMq-server挂掉数据丢失,将durable设为True
channel.queue_declare(queue='1',durable=True)
for i in range(10):   # 创建10个q
    message = json.dumps({
   'OrderId':"1000%s"%i})
    # exchange表示交换器,可以精确的指定消息应该发到哪个队列中,route_key设置队列的名称,body表示发送的内容
    channel.basic_publish(exchange='',routing_key='1',body=message)
    print(message)
connection.close()

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

import pika
credentials = pika.PlainCredentials('lvhua','123456')
connection =<
  • 5
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值