当前位置: 首页 > news >正文

消息队列总结及案例

文章目录

  • 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进行转发到相应的队列中,消费者从声明的队列中获取消息,进行消费。

  1. 安装rabbitmq (以windows为例,其他系统参考官网)
  • 首先安装erlang运行环境;下载安装后(bin)配置环境变量;
  • 下载rabbitmq并安装,根据自己的操作系统及erlang版本选择兼容版本;
  • 运行rabbitmq 服务,进入安装目录的sbin下,终端输入rabbitmqctl start_app
  • 启动插件管理 rabbitmq-plugins enable rabbitmq_management
  • 查看状态 rabbitmqctl status,如下为成功;(shutdown关闭)
    在这里插入图片描述
    浏览器打开UI界面,可以使用guest/guest登录。
    在这里插入图片描述
    登录成功,如下:
    在这里插入图片描述
     
  1. rabbitmq工作模式
  • 生产者、消费者模式
    • hello world ,一个生产者,一个消费者
    • work queue ,一个生产者,多个消费者
  • 发布、订阅模式
    • fanout 广播模式
    • direct 根据routing_key定向模式
    • topic模式,根据正则匹配routing_key进行转发消息。
  • rpc模式
     
  1. 使用rabbitmq
    pending

 

rocketmq

  • 基于JMS实现,仅支持java语言;

redis list 队列

pending…

http://www.lryc.cn/news/39659.html

相关文章:

  • 通过WiFi连接adb调试
  • 【蓝桥杯-筑基篇】常用API 运用(1)
  • 想要成为高级网络工程师,只需要具备这几点
  • c++ 每日十问3-处理数据
  • 【MySQL】实验一 数据定义
  • 17.电话号码的字母组合(深度递归遍历解决经典老题)
  • Python 基础教程【1】:Python介绍、变量和数据类型、输入输出、运算符
  • 【RPC】Apache Thrift系列详解 - 概述与入门
  • class03:MVVM模型与响应式原理
  • [Spring学习]08 @Resource和@Autowired注解的区别
  • 前端开发神器VS Code安装教程
  • 【Hive进阶】-- Hive SQL、Spark SQL和 Hive on Spark SQL
  • 搭建自己的直播流媒体服务器SRS,以及SRS+OBS直播推拉流使用及配置
  • Node.js-----使用express写接口
  • 【Linux修炼】16.共享内存
  • JAVA进阶 —— Stream流
  • Linux基础命令大全(上)
  • 嵌入式 串口通信
  • C语言函数调用栈
  • 【高阶数据结构】红黑树
  • 网络协议分析期末复习(二)
  • 【C++】STL简介 及 string的使用
  • MySQL事务详解
  • ChatGPT背后的技术和多模态异构数据处理的未来展望——我与一位资深工程师的走心探讨
  • iOS-砸壳篇(两种砸壳方式)
  • linux 基础
  • Java:SpringBoot给Controller添加统一路由前缀
  • Java 基于 JAVE 库 实现 视频转音频的批量转换
  • Spring容器——基于XML注入
  • 设计模式(二十一)----行为型模式之状态模式