消息队列——RocketMQ

2024-05-05 18:28
文章标签 rocketmq 队列 消息

本文主要是介绍消息队列——RocketMQ,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

消息队列——MQ

  • 什么是消息队列:
  • 应用场景:
  • 常见的 MQ 产品
  • RocketMQ 的架构及概念
    • 发送不同类型的消息

什么是消息队列:

MQ 全称(Message Queue)又名消息队列,是一种提供消息队列服务的中间件,也称为消息中间件,是一套提供了消息生产、存储、消费全过程 API的软件系统(消息即数据)。通俗点说,就是一个先进先出的数据结构

应用场景:

异步解耦(减少请求响应时间和解耦)
但是对于用户来说,注册功能实际只需要注册系统存储用户的账户信息后,该用户便可以登录,而后续 的注册短信和邮件不是即时需要关注的步骤。 所以实际当数据写入注册系统后,注册系统就可以把其他的操作放入对应的消息队列 MQ 中然后马上返 回用户结果,由消息队列 MQ 异步地进行这些操作(较耗时而且不需要即时(同步)返回结果的操作作为消息放入消息队列)
在这里插入图片描述

常见的 MQ 产品

ZeroMQ:
号称最快的消息队列系统,尤其针对大吞吐量的需求场景。扩展性好,开发比较灵活,采用 C 语言 实现,实际上只是一个 socket 库的重新封装,如果做为消息队列使用,需要开发大量的代码。 ZeroMQ 仅提供非持久性的队列,也就是说如果 down 机,数据将会丢失。
RabbitMQ:
使用 erlang 语言开发,性能较好,适合于企业级的开发。但是不利于做二次开发和维护。
ActiveMQ:
历史悠久的 Apache 开源项目。已经在很多产品中得到应用,实现了 JMS1.1 规范,可以和 springjms 轻松融合,实现了多种协议,支持持久化到数据库,对队列数较多的情况支持不好。
RocketMQ:
阿里巴巴的 MQ 中间件,由 java 语言开发,性能非常好,能够撑住双十一的大流量,而且使用起来 很简单。
Kafka:
Kafka 是 Apache 下的一个子项目,是一个高性能跨语言分布式Publish/Subscribe 消息队列系统, 相对于 ActiveMQ 是一个非常轻量级的消息系统,除了性能非常好之外,还是一个工作良好的分布式系统。

RocketMQ 的架构及概念

在这里插入图片描述
Broker(邮递员):
Broker 是 RocketMQ 的核心,负责消息的接收,存储,投递等功能.
NameServer(邮局):
消息队列的协调者,Broker 向它注册路由信息,同时Producer 和 Consumer 向其获取路由信息
Producer(寄件人):
消息的生产者,需要从 NameServer 获取 Broker 信息,然后与 Broker 建立连接,向 Broker 发送消 息
Consumer(收件人):
消息的消费者,需要从 NameServer 获取 Broker 信息,然后与 Broker 建立连接,从 Broker 获取消息
Topic(地区):
用来区分不同类型的消息,发送和接收消息前都需要先创建Topic,针对 Topic 来发送和接收消息
Message Queue(邮件):
为了提高性能和吞吐量,引入了 Message Queue,一个 Topic 可以设置一个或多个 Message Queue,这样消息就可以并行往各个Message Queue 发送消息,消费者也可以并行的从多个 Message Queue 读取消息 Message Message 是消息的载体。
Producer Group 生产者组:
简单来说就是多个发送同一类消息的生产者称之为一个生产者组。
Consumer Group 消费者组:
消费同一类消息的多个 consumer 实例组成一个消费者组。

发送不同类型的消息

可靠同步发送:
同步发送是指消息发送方发出数据后,会在收到接收方发回响应之后才发下一个数据包的通讯方 式。 此种方式应用场景非常广泛,例如重要通知邮件、报名短信通知、营销短信系统等。
可靠异步发送:
异步发送是指发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。发送 方通过回调接口接收服务器响应,并对响应结果进行处理。 异步发送一般用于链路耗时较长,对 RT 响应时间较为敏感的业务场景,例如用户视频上传后通知 启动转码服务,转码完成后通知推送转码结果等。
单向发送:
单向发送是指发送方只负责发送消息,不等待服务器回应且没有回调函数触发,即只发送请求不 等待应答。 适用于某些耗时非常短,但对可靠性要求并不高的场景,例如日志收集。

这篇关于消息队列——RocketMQ的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/962365

相关文章

【ActiveMQ】开源消息总线ActiveMQ的使用

在阅读的过程中有任何问题,欢迎一起交流 邮箱:1494713801@qq.com    QQ:1494713801     1:下载 ActiveMQ 5.6.0 Release  http://activemq.apache.org/download.html  放到d盘  2:运行apache-activemq服务:双击 activemq.bat    4:所需j

【ActiveMQ】开源消息总线ActiveMQ

在阅读的过程中有任何问题,欢迎一起交流 邮箱:1494713801@qq.com    QQ:1494713801     一、消息中间件MOM(Message-Oriented Middleware)     消息中间件是解决异步分布式系统中通讯和排队问题的中间件技术。它利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和

.net下使用cap实现消息异步处理

介绍 github地址 CAP 是一个基于 .NET Standard 的 C# 库,它是一种处理分布式事务的解决方案,同样具有 EventBus 的功能,它具有轻量级、易使用、高性能等特点。 新建项目 新建.net7web项目 安装依赖包 安装软件 安装redis和Sql Server 修改代码 新建RedisConfigModel namespace CAPStu01.

【错题集-编程题】主持人调度(二)(贪心 + 优先级队列)

牛客对应题目链接:主持人调度(二)_牛客题霸_牛客网 (nowcoder.com) 一、分析题目 把区间按照左端点排序,然后搞个堆: 先把第⼀个区间的右端点加⼊到堆中。遍历后⾯的区间,分情况讨论:(1)如果左端点大于等于堆顶元素,能接在后面,干掉堆顶,然后把这个区间的右端点加⼊堆。(2)否则,只能再来⼀个人,只把这个区间的右端点加⼊堆。 最后堆的大小就是需要的⼈数 二

用队列ConcurrentLinkedQueue模拟生产者和消费者

用队列ConcurrentLinkedQueue模拟生产者和消费者 package com.queue;import java.util.Queue;import java.util.UUID;import java.util.concurrent.ConcurrentLinkedQueue;/*** Created by lifeng* 2017/12/20 10:15*/public

java优先级队列

1. 优先级队列            1.1 概念 前面介绍过队列,队列是一种先进先出(FIFO)的数据结构,但有些情况下,操作的数据可能带有优先级,一般出队 列时,可能需要优先级高的元素先出队列,该中场景下,使用队列显然不合适,比如:在手机上玩游戏的时候,如 果有来电,那么系统应该优先处理打进来的电话;初中那会班主任排座位时可能会让成绩好的同学先挑座位。 在这种情况下,数据

消息队列( Kafka)

使用场景 日志处理: 大并发量时 ,将日志写入消息队列 消息通讯 点对点消息队列 产品 目前生产环境,使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ等 **将要介绍的: Kafka** 优势 高吞吐:非常普通的硬件Kafka也可以支持每秒数百万的消息 支持通过Kafka服务器和消费集群来区分消息 支持Hadoop并行数据加载

RocketMQ 面试题(二)

1. 列举RocketMQ发送的三种策略 ? RocketMQ提供了三种主要的消息发送策略,它们分别是同步发送(Sync)、异步发送(Async)和单向发送(OneWay)。以下是关于这三种发送策略的详细解释: 同步发送(Sync): 在同步发送模式下,生产者向MQ发送消息时,会阻塞等待直到MQ返回发送结果。这种发送方式可靠性最高,因为生产者会确保每一条消息都被成功发送到MQ服务器,并得到确

kk聊天室系统源码搭建-自适应手机电脑-秒级响应-群体消息

kk聊天室系统源码搭建-自适应手机电脑-秒级响应-群体消息-单体消息 可以无限创建聊天室,可以把单个聊天室链接拿出来单独使用,消息秒级响应,支持设置屏蔽词。 具体仔细看视频演示,不提供演示,因为青狐资源网会员用户太多,会有人乱发广告,我们没时间管理! 也可用h5转软件技术,合成app软件。 大致功能: 支持设置屏蔽词支持无限创建聊天室支持单个链接拿出使用(也可直接把链接镶嵌到

订单成功时用PHP怎么做网站后台消息提醒?

前段html js: <!-- 百度语音 -->    <div id="yuyinbb" style="display:none;"><audio   id="music"  >您的浏览器不支持 audio 标签。</audio></div><script src="http://libs.baidu.com/jquery/1.11.1/jquery.min.js" type="text