甘肃党的建设网站南城网站优化公司
文章目录
- python内置队列
- 先进先出的队列Queue
- 分布式队列
- rabbitmq
- rocketmq
- redis list 队列
python内置队列
- 标准库queue
- 提供Queue队列、LifoQueue栈、PriorityQueue优先级队列
- 用于单机的生产者、消费者缓冲队列;
生产者,生产消息的进程或线程;
消费者,使用消息的进程或者线程;
先进先出的队列Queue
pending…
在这里插入代码片
分布式队列
用于不同的应用程序/主机之间通信。
rabbitmq
- erlang语言实现,比较稳定;
- 基于AMQP协议,不限制实现语言,可以python/java/go等
- client/server模式,目前最流行的消息队列之一;
- 应用:系统解耦;解决高并发,减轻服务器压力;
- 分布式系统,集成系统之间对接;
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登录。
登录成功,如下:
- rabbitmq工作模式
- 生产者、消费者模式
- hello world ,一个生产者,一个消费者
- work queue ,一个生产者,多个消费者
- 发布、订阅模式
- fanout 广播模式
- direct 根据routing_key定向模式
- topic模式,根据正则匹配routing_key进行转发消息。
- rpc模式
- 使用rabbitmq
pending
rocketmq
- 基于JMS实现,仅支持java语言;
redis list 队列
pending…