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

本文涉及的产品
函数计算FC,每月15万CU 3个月
注册配置 MSE Nacos/ZooKeeper,118元/月
应用实时监控服务-用户体验监控,每月100OCU免费额度
简介: 消息队列和应用工具产品体系-消息队列 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版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
5月前
|
消息中间件 测试技术 RocketMQ
消息队列 MQ产品使用合集之在异步发送消息函数sendMessage()中出现了错误,错误代码为-3,该如何解决
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
5月前
|
消息中间件 监控 Oracle
消息队列 MQ产品使用合集之启动Namesrv节点时,遇到报错,该如何解决
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
5月前
|
消息中间件 存储 Java
Java中的消息队列应用与性能优化
Java中的消息队列应用与性能优化
|
5月前
|
消息中间件 网络协议 JavaScript
消息队列 MQ产品使用合集之报错提示是"the internal error!",是什么原因导致的”
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
4月前
|
消息中间件 监控 Java
在Java应用中实现微服务间的消息队列通信
在Java应用中实现微服务间的消息队列通信
|
4月前
|
消息中间件 存储 Java
Java中的消息队列应用与性能优化
Java中的消息队列应用与性能优化
|
5月前
|
消息中间件 Java API
消息队列 MQ产品使用合集之遇到"No topic route info in name server for the topic"错误,该如何处理
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
5月前
|
消息中间件 Java Shell
消息队列 MQ产品使用合集之启动broker&proxy的时候会报错,该怎么办
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
4月前
|
消息中间件 C语言 RocketMQ
消息队列 MQ操作报错合集之出现"Connection reset by peer"的错误,该如何处理
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
4月前
|
消息中间件 Java C语言
消息队列 MQ使用问题之在使用C++客户端和GBase的ESQL进行编译时出现core dump,该怎么办
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。