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

54.RabbitMQ快速实战以及核心概念详解

MQ

MQ:MessageQueue,消息队列。这东西分两个部分来理解:

队列,是一种FIFO 先进先出的数据结构。

消息:在不同应用程序之间传递的数据。将消息以队列的形式存储起来,并且在不同的应用程序之间进行传递,这就成了MessageQueue

MQ的优缺点

  • 系统可用性降低
    • 一旦MQ宕机,对业务会产生影响。这就需要考虑如何保证MQ的高可用。
  • 系统复杂度提高
    • 会变为异步调用,数据的链路就会变得更复杂
    • 比如:消息如何高效存储、如何定期维护、如何监控、如何溯源等等。
  • 消息安全性问题
    • 比如如何快速保存海量消息?如何保证消息不丢失?不被重复处理?怎么保证消息的顺序性?如何保证消息事务完整等问题

几大主流MQ产品特点比较

这里的优缺点并不是绝对的,因为每个产品都在不管演进。比如Kafka现在基本可以做到数据不丢失。RabbitMQ的Stream队列就是模拟Kafka的实现机制,消息吞吐量也提升了非常多。另外也还有很多新的MQ产品体现了更强大的竞争力,比如Pulsar。

优点缺点使用场景
kafka吞吐量非常大,
性能非常好,
集群高可用。
会丢数据。
功能单一。
日志分析
大数据采集
RabbitMQ消息可靠性高
功能全面
吞吐量比较低
消息积累会影响性能
erlang语言不好定制
小规模场景
RocketMQ高吞吐,高性能,高可用,功能全面开源版功能不如云上版
官方文档简单
客户端只支持java
几乎全场景

关于RabbitMQ

RabbitMQ的历史可以追溯到2006年,是一个非常老牌的MQ产品,使用非常广泛。官网地址 https://www.rabbitmq.com/ 。

安装RabbitMQ服务

#Docker安装docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.11-management

RabbitMQ中的核心概念总结

Producer -------- Connection ---------》 RabbitMQ Server 《-------- Connection --------- Consumer

  • RabbitMQ Server的服务器称为Broker
    • RabbitMQ集群中划分出多个virtual host
  • 客户端与RabbitMQ进行交互,首先就需要建立一个TPC连接,这个连接就是Connection。
    • 一旦客户端与RabbitMQ建立了连接,就会分配一个AMQP信道 Channel。
    • RabbitMQ为了减少性能开销,也会在一个Connection中建立多个Channel。
  • 消息发送到RabbitMQ中后,会首先进入一个交换机,然后由交换机负责将数据转发到不同的队列中。
    • 交换机多用来与生产者打交道。生产者发送的消息通过Exchange交换机分配到各个不同的Queue队列上,而对于消息消费者来说,通常只需要关注自己感兴趣的队列就可以了。
  • 队列 Queue
    • Queue是实际保存数据的最小单位
    • Queue不需要Exchange也可以独立工作
    • 增加Exchange实现更复杂的消息分配策略。
http://www.lryc.cn/news/213467.html

相关文章:

  • Qt TreeView 设置节点不可编辑
  • python django获取某个角色的某个数据和——例如:获取所有订单的应付金额总和
  • 如何在React项目中引用less
  • NUXT前端服务端渲染技术框架
  • 力扣每日一题90:子集
  • 「linux基础」上传代码到github/gitee
  • Hafnium总体考虑
  • C#__对Json文件的解析和序列化
  • 如果一定要在C++和JAVA中选择,是C++还是java?
  • 如何运行深度学习项目代码
  • C语言 每日一题 day9
  • 通讯网关软件032——利用CommGate X2OPC实现OPC客户端访问Modbus TCP设备
  • [计算机提升] 查看系统软件
  • 【mysql】单表数据量过大解决方案
  • Kafka - 3.x 消费者 生产经验不完全指北
  • UDP网络编程的接受与发送信息
  • RK3588开发笔记-USB3.0接口调试
  • AI绘画|midjourney入门保姆教程,30秒出专业大片,国内直接使用
  • 阿里发布AI编码助手:通义灵码,兼容 VS Code、IDEA等主流编程工具
  • 【Linux】-进程控制(深度理解写时拷贝、exit函数、return的含义以及makefile编译多个程序)-进程创建、进程终止、进程等待、进程程序替换
  • 【mfc/VS2022】计图实验:绘图工具设计知识笔记3
  • Leetcode—1488.避免洪水泛滥【中等】
  • CSS与基本选择器
  • 回归算法|长短期记忆网络LSTM及其优化实现
  • 小米电视播放win10视频 win10共享问题
  • uniApp开发注意要点提炼-xyphf
  • DHorse改用fabric8的SDK与k8s集群交互
  • 如何在阿里云国际站服务器上添加IP白名单?
  • GPT实战系列-ChatGLM2模型的微调训练参数解读
  • RabbitMQ入门到实战教程,消息队列实战,改造配置MQ