消息队列和案例
python内置队列
- 标准库queue
- 提供Queue队列、LifoQueue栈、PriorityQueue优先级队列
- 用于单机的生产者、消费者缓冲队列;
生产者,生产消息的进程或线程;
消费者,使用消息的进程或者线程;
先进先出的队列Queue
pending…
在这里插入代码片
分布式队列
用于不同的应用程序/主机之间通信。
rabbitmq
- erlang语言实现,比较稳定;
- 基于AMQP协议,不限制实现语言,可以python/java/go等
- client/server模式,目前最流行的消息队列之一;
- 应用:系统解耦;解决高并发、秒杀,减轻服务器压力(流量消峰);
- 分布式系统,集成系统之间对接;
- 异步任务处理;
- 其他竞品kafka(日志采集)、RocketMQ(java实现高并发)
Broker:接收和分发消息的应用,RabbitMQ Server就是Message Broker。
Virtual host:当多个用户使用同一个RabbitMQ Server时,可以划分出多个虚拟机,每个用户在自己的vhost创建exchange/queue等。
Connection:publisher/consumer和broker之间的TCP连接。
Channel:如果每一次访问RabbitMQ都建立一个Connection,在消息量大时建立TCP Connection的开销是巨大的,效率也非常低。Channel是在Connection内部建立的逻辑连接,通常每个thread会创建单独的Channel进行通信,channel之间是完全隔离的。Channel作为轻量级的Connection,极大减少了操作系统建立TCP连接的开销。
生产者,生产消息的应用程序,将消息放入消息队列中。
消费者,使用消息的应用程序,从消息队列中获取消息。
官网参考
原理图:
建立好连接后,生产者将消息交给exchange(交换机),由交换机根据routing_key进行转发到相应的队列中,消费者从声明的队列中获取消息,进行消费。
- 安装rabbitmq (以windows为例,其他系统参考官网)
- 首先安装erlang运行环境;下载安装后(bin)配置环境变量;
- 下载rabbitmq并安装,根据自己的操作系统及erlang版本选择兼容版本;
- 运行rabbitmq 服务,进入安装目录的sbin下,终端输入rabbitmqctl start_app
- 启动插件管理 rabbitmq-plugins enable rabbitmq_management
- 查看状态 rabbitmqctl status,如下为成功;(shutdown关闭服务器)
浏览器打开UI界面,可以使用guest/guest登录。
登录成功,如下:
linux(ubuntu)安装: sudo apt-get install rabbitmq-server
- rabbitmq工作模式
- 生产者、消费者模式
- hello world ,一个生产者,一个消费者
- work queue ,一个生产者,多个消费者
- 发布、订阅模式
- fanout 广播模式
- direct 根据routing_key定向模式
- topic模式,根据正则匹配routing_key进行转发消息。
- rpc模式
- Ubuntu1804 安装rabbitmq
- 安装erlang
# apt安装
sudo apt-get install erlang-nox
# 更新源列表
sudo apt-get upgrade
- 安装rabbitmq
sudo apt-get install rabbitmq-server
# 查看状态
rabbitmqctl status
如下为成功状态:
- 开启web 界面管理
# 开启插件管理
rabbitmq-plugins enable rabbitmq_management
# 浏览器打开
# http://localhost:15672
# guest: guest 访问
rocketmq
- 基于JMS实现,仅支持java语言;
redis list 队列
pending…
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhghfifa
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13