Python RabbitMQ原理和使用场景以及模式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python RabbitMQ原理和使用场景以及模式相关的知识,希望对你有一定的参考价值。
参考技术A 客户端通过 TCP 连接到 RabbitMQ Server。连接成功后 RabbitMQ 会创建一个 AMQP 信道。
信道是创建在 TCP 上的虚拟连接,AMQP 命令都是通过信道发送出去的,每个信道都会有一个唯一的 ID,不论是发布消息,订阅队列或者介绍消息都是通过信道完成的。
设置如下:
只做队列持久化是不行的还需要在加上消息持久化
消息生产者
消息消费者
:在修改消费者的 routing_key 后,需要重新创建队列。
消息生产者
在生产者中只需要修改 exchange_declare 他的 type 为 fanout 即可
消息消费者
例如:
接收者(消费者) routing_key='a.*'
发送者(生产者) routing_key = 'a.b.c.d'
结果:匹配失败
因为:
* 表示匹配一个单词
# 表示匹配0个或多个单词
消息生产者
消息消费者
消息生产者
消息消费者
三个任务,任务1、任务2、任务3。他们之间有相互的制约。执行 任务1 的前提是要有 任务2 的结果。执行 任务2 需要 任务3 的结果。
一般会使用 crontab 来做计划任务。预估一下每个任务的完成时间。然后制定任务。当数量变大处理时间变成,就需要经常修改 crontab 任务。
使用 RabbitMQ 后每个任务结束时只需要发送一个结束信息即可
如: 任务2 订阅 任务3 的信息。当 任务3 完成后发送一个完成消息。 任务2 接收到完成消息后开始执行,在执行结束后发送 任务2 完成消息。 任务1 订阅 任务2 的消息,然后执行。
有三个用户A、B、C 他们分别发送文章,但后台会根据用户的级别做不同的操作。
A 是普通用户,系统发布。
B 是 VIP 用户,系统发布和推荐给关注这部分内容的客户。
C 是黑卡客户,系统发布、推荐给关注这部分内容的客户、在这个分类中置顶这篇文章。
文章发布服务只关心是否成功,剩下的操作都不关心。可以使用 RabbitMQ 服务将其他操作分离。
有一个操作 A。用户执行这个任务后,又非常需要结果。
为什么不是后台直接将结果发送给用户呢。因为一旦增加了订阅用户,就需要修改后台程序,这样很恶心。
RabbitMQ 自带管理后台,安装后需要配置开启
进入 RabbitMQ 安装目录中的 sbin 目录执行
http://localhost:15672/
用户名密码均为guest
以上是关于Python RabbitMQ原理和使用场景以及模式的主要内容,如果未能解决你的问题,请参考以下文章
RabbitMQ,Apache的ActiveMQ,阿里RocketMQ,Kafka,ZeroMQ,MetaMQ,Redis也可实现消息队列,RabbitMQ的应用场景以及基本原理介绍,RabbitMQ