消息队列和应用工具产品体系-消息队列 Rocket 版的基本使用

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 消息队列和应用工具产品体系-消息队列 Rocket 版的基本使用

开发者学习笔记【阿里云云原生助理工程师认证(ACA)课程:消息队列和应用工具产品体系-消息队列 Rocket 版的基本使用

课程地址:https://edu.aliyun.com/course/3112075/lesson/19040


消息队列和应用工具产品体系-消息队列 Rocket 版的基本使用

 

内容介绍

一、RocketMQ基本操作讲解

二、阿里云消息队列产品简介

 

一、RocketMQ 基本操作讲解

image.png

RocketMq的使用流程基本上分为两大阶段:

第一个阶段是资源准备阶段,包括开通服务创建,实力创建的三步,这一步流程和接入协议无关,基本上是一致的。

第二阶段是开通接入点并接融进行接入操作主要分创建白地获取接入点下载sdk实际接入4个步骤。这一步根据使用的接入协议不同,分为两个分支,操作流程略有不同。

首先,如果想使用消息队列,需要有先开通服务并进行相应的授权。要注意的是,开通RockteMQ服务并不需要付费。

 

二、阿里云消息队列产品简介

image.png

 

在开通RockteMQ服务之后,就需要选择消息队列所在的地域,并在所在地域创建m q的实例。之前我们也讲过,如果使用topic接入协议,在非公网地域下,只支持内网接入方式,也就是说说何mq处在不同地域通过topic记入方式是无法访完到消息队列的。同时需要注意的是,RockteMQ实例一旦创建后不支持修改地域,因此创建之前请谨慎选择。

在选择完地域之后,还需要选择实例的类型,创建实例的类型分为两种,分别是标准版实例和铂金版实例。标准版实例具有独立的命名空间,不同实力之间通过逻辑隔离。而铂金版实例也拥有独立的名命名空间,而且不同的实例之间通过物理进行隔绝相比较,而标准版实力的计算的安全性远远不如铂金版来的更加有保证。另外,铂金板承诺99.9%的的可用性,也就是说,累计不可用时长不超过每月43分钟。而铂金版承诺99.99%的可用性,也就是累积不可用时长不超过每月4:03 钟。实际上,铂金版自从2017年上线以来,始终保持了零故障,最大限度的降低了业务滋损的风险成本。同时,铂金板提供了更更多多的高级功能,稳定性也更也更高,还有阿里云专项的专家通道,可以提供更好的技术支识服务。在计费方面,普通版是按量计费,不使用不收费。而铂金版因为占用了相应的资源,因此,采用包年包月的收费方式。在实例开通之后,如果需要用消息队列提供服务,则还需要在消息队列之下创建Topic。

image.png

Topic在创建时,除了需要指定名称和描述之外,还需要选择topic的消息类型。其中消息类型有普通消息,事务消息,分区顺序消息,全局顺序消息,定时演示消息五种类型可以选择。这五种类型的区别在上面的课中我们都会所讲解,这里不太赘述,需要注意的是,在标准版下计算计价计费方式采用时长和调用接口数的混合计费方式在创建topic之后,系统即将为分配计算资源,因此只要系统中存在着,topic就会开始计费。在创建topic之后,开发者还需要创建消息的生产者和消费者集群以并接入。

 

image.png

 

在创建group的时候,要注意,创建group需要手动设置id,而group id既可以作为消息生产者的标识,也可以作为消息消费者的标识,也就是说,通过group id既可以创建生产者集群,也可以创建消费者集群。在创建group id的时候,还需要指定group 对应的连接方式,也就是说,创建group 需要指定使用topic协议连接还是http协议连接,不同接入方式的group不能交叉使用。

image.png

在group创建成功后,就会生成接入点连接,使用id和接入点连接就可以创建生产者和消费者集群接入。消息队列。另外要注意的是,group id和group 并不是从属关系,两者是单独创建的,创建之后的group id可以订阅一个或多个topic,反过来,一个topic也可以被多个group id订阅。在topic和group都创建好之后,就可以向消息队列中发送和消费消息了。若果提供了三种形式,快速体验消息的生产和消费,也就是控制台模式,docker模式和sdk模式。其中,控制台模式发送消息最为简单,只需要在控制台中填写消息内容消息key和消息,即可完成消息的发送,而sdk模式则是开发者在应用开发中最为常见的消息队列使用方式。

在接入的时候,肯以选择和t c p接入方式中的官方java, sdk, cc++,sdk,以及社区版本的java, sdk和c++sdk以及多种http接入方式的sdk,下面我们以topic接入方式下的java sdk为例,来看一下如何进行消息的订阅。

image.png

 

首先在代码中创建一个对象,在对象中填入i以及接入点信息4个参数,然后通过工厂创建对象,获取对象之后,即可对进行订阅,在订阅的时候可以设置的参数实现对消息的过滤。同时一个可以订阅多个,在订阅的同时,开发者需要传入一个对象作为消息接收回调函数,这样,当有消息到达时,回到函数会被调用一并开发者处理消息,当用户对消息处理成功后,需要返回通知消息队列这条消息已经被成功的处理,如果消息没有被成功的处理,则会启动消息队列的重试机制,同时开发者再次处理该消息全部设置完毕后,执行的函数即可正式开始了消息的接收。总体来看,通过代码进行消息的订阅还是很简单的。

 

image.png

 

接下来我们介绍的功能是消息轨迹查询,这个功能对项目开发和生产环境的运维过程中的问题诊断和排查显得至关重要。

消息轨迹查询是这三种查询方式:

第一种是id查询,这种方式属于精确匹配精确查询,此查询速度快,所以推荐开发者使用。

第二种是查询,这种方式属于模糊查询,最多查询一天的轨迹,仅适用于没有记录id,但是设置了key的情况下,同时要求开发者设置的就有变视图才可以执行。

第三种方式是按copy查询,这种方式属于范围查询,适合于既没有id也没有且消息量比较少的场景,因为时间范围内消息很多且不具有区分度,所以不推荐使用。在这里需要注意的是,在tc p写一下,支持通过id key和时间范围的方式查询相关的消息轨迹,而在http写一下,仅支持通过id查询相关的消息轨迹。

同时,由于消息在消息队列mq中保存的时间默认为三天,所以开发者只能查询从当前查询时间起三天内的消息轨迹。例如,当前的时间是2019年6月10号下午3:09:48 ,那么能查到消息轨迹最短时间为2019年6月7日下午三3:09:48 。

 

image.png

 

之前在讲到消息从事部分的时候,为大家提到了死信队列这个概念,在这里我们先为大家讲解一下什么叫死信队列?死信队列是指当一条消息初次消费失败时,mq会自动进行消息从事如果从事次数达到最大从事次数之后依然消费失败,则表示,消费者在现在的情况下没法正确的消费。Mq就会将他发到特殊的队列中,而这个特殊的队列就被称为死信队列,这种消息特被称为死信消息,其中最大处其中最大从事次数为16次,开发者可以自行进行配置,在死信队列中的死信消息有以下的特征,首先,死信消息不再会被消费者正常的消费到,同时,死信消息与正常消息相同,均为三天,三天之后会被自动删除,因此,开发者需要在死信消息产生了三天内即时对死信消息进行处理,而死信队列具有以下特征,首先,一个死信队列对应的是一个groupid,而不是单个消费实力,也不是单个topic,如果一个groupid没有产生死信消息,则不会分为它建创建相应的死信队列,一个死信队列中包含对应股白地产生的所有死信消息,不论该消息属于哪个,topic给控制台提供了对死信消息的查询,导出和重发功能,开发者可以手动处理死信消息,达到业务流程不丢失的效果。

 

image.png

资源报表提供了消息生产量和消息消费量的统计功能。开发者可以查询在一个时间段内发送是指定的消息量或者消息。Tps也可以查询,在一个时间段内,消息消费量和消费,Tps里面,开发者能够随时掌握消息生产量和消息消费量在各时间段的变化,在查询过程中,可以选择按查询或或者group查询,在查询是分别选成您要查询的和group,并指定其他信息,最多可以提供近三天内的消息的效果,消息的消费查询查询周期包括一分钟,十分钟,三十分钟和一个小时查询周期决定了数据采集的时间密度,周期越短,采集点越密集,消费信息越详细,查询结果则以图表的形式进行展现。

同时,RocketMQ还可以关联云监控系统,云监控系统可以监控MQ的消息堆积数量,消息保留时间每分钟消息消耗数,死信消息数等十几个信息,并根据开发者配置的规则判断资源的使用是否超过配置预值,如果超过预值,则通过短信,邮件机器人等方式,同时相应的联系人以边开发者及时处理日常异常信息,保证系统的安全运行问题,保证安全稳定运行。

以上就是mq基本操作讲解的全部内容,希望同学们通过本章的学习,加深RocketMQ的使用和了解。

 

相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
3月前
|
消息中间件 NoSQL Java
Redis Streams在Spring Boot中的应用:构建可靠的消息队列解决方案【redis实战 二】
Redis Streams在Spring Boot中的应用:构建可靠的消息队列解决方案【redis实战 二】
250 1
|
22天前
|
消息中间件 人工智能 监控
|
2月前
|
消息中间件 Linux API
Linux进程间通信(IPC) Linux消息队列:讲解POSIX消息队列在Linux系统进程间通信中的应用和实践
Linux进程间通信(IPC) Linux消息队列:讲解POSIX消息队列在Linux系统进程间通信中的应用和实践
27 1
Linux进程间通信(IPC) Linux消息队列:讲解POSIX消息队列在Linux系统进程间通信中的应用和实践
|
3月前
|
消息中间件 存储 负载均衡
简单入门:消息队列的概念和应用
在复杂的系统架构中,组件间的通信是至关重要的问题。消息队列作为一种解决方案,能够使组件之间的通信更加高效、可靠。本文将从简单到复杂,逐步向您介绍消息队列的概念、使用场景以及如何实现。
101 3
|
4月前
|
消息中间件 BI Serverless
消息队列推出serverless版、Quick BI升级至5.0……阿里云近期产品动态汇总
消息队列推出serverless版、Quick BI升级至5.0……阿里云近期产品动态汇总
478 1
|
4月前
|
消息中间件 监控 负载均衡
Kafka高级应用:如何配置处理MQ百万级消息队列?
在大数据时代,Apache Kafka作为一款高性能的分布式消息队列系统,广泛应用于处理大规模数据流。本文将深入探讨在Kafka环境中处理百万级消息队列的高级应用技巧。
181 0
|
6月前
|
消息中间件 存储 NoSQL
MQ消息队列篇:三大MQ产品的必备面试种子题
MQ(Message Queue)作为一种用于实现异步通信的技术,具有重要的作用和应用场景。在面试过程中,MQ相关的问题经常被问到,因此了解MQ的用途和设计原则是必不可少的。本文总结了MQ的常见面试题,包括MQ的作用、产品选型、消息不丢失的保证、消息消费的幂等性、消息顺序的保证、消息的高效读写、分布式事务的最终一致性等方面。通过深入理解这些问题,可以更好地理解MQ的应用和设计,为面试和实际应用提供参考。
104 0
|
6月前
|
消息中间件 Go 流计算
Golang微服务框架Kratos应用NATS消息队列详解
Golang微服务框架Kratos应用NATS消息队列详解
|
6月前
|
消息中间件 Kafka Go
Golang微服务框架Kratos应用Kafka消息队列
Apache Kafka 是一个分布式数据流处理平台,可以实时发布、订阅、存储和处理数据流。它旨在处理多种来源的数据流,并将它们交付给多个消费者。简而言之,它可以移动大量数据,不仅是从 A 点移到 B 点,而是能从 A 到 Z 的多个点移到任何您想要的位置,并且可以同时进行。
122 0
|
6月前
|
消息中间件 网络协议 物联网
Golang微服务框架Kratos应用MQTT消息队列
MQTT 协议 是由`IBM`的`Andy Stanford-Clark博士`和`Arcom`(已更名为Eurotech)的`Arlen Nipper博士`于 1999 年发明,用于石油和天然气行业。工程师需要一种协议来实现最小带宽和最小电池损耗,以通过卫星监控石油管道。最初,该协议被称为消息队列遥测传输,得名于首先支持其初始阶段的 IBM 产品 MQ 系列。2010 年,IBM 发布了 MQTT 3.1 作为任何人都可以实施的免费开放协议,然后于 2013 年将其提交给结构化信息标准促进组织 (OASIS) 规范机构进行维护。2019 年,OASIS 发布了升级的 MQTT 版本 5。
45 0