RocketMQ版控制台,在左侧
打开IntelliJ IDEA,创建一个Java工程。
在pom.xml文件中添加以下依赖引入Java SDK的依赖库。
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-client-java</artifactId>
<version>5.0.4</version>
</dependency>在IDEA中打开已创建的Java工程,在src/main/java路径下创建一个Java类。
将Java类的内容替换为云消息队列 RocketMQ 版提供的消息订阅代码。示例代码如下:
package doc; import org.apache.rocketmq.client.apis.*;
import org.apache.rocketmq.client.apis.consumer.ConsumeResult;
import org.apache.rocketmq.client.apis.consumer.FilterExpression;
import org.apache.rocketmq.client.apis.consumer.FilterExpressionType;
import org.apache.rocketmq.client.apis.consumer.PushConsumer;
import org.apache.rocketmq.shaded.org.slf4j.Logger;
import org.apache.rocketmq.shaded.org.slf4j.LoggerFactory; import java.io.IOException;
import java.util.Collections; public class PushConsumerExample {
private static final Logger LOGGER = LoggerFactory.getLogger(PushConsumerExample.class); private PushConsumerExample() {
} public static void main(String[] args) throws ClientException, IOException, InterruptedException {
/**
* 实例接入点,从控制台实例详情页的接入点页签中获取。
* 如果是在阿里云ECS内网访问,建议填写VPC接入点。
* 如果是在本地公网访问,或者是线下IDC环境访问,可以使用公网接入点。使用公网接入点访问,必须开启实例的公网访问功能。
*/
String endpoints = "rmq-cn-xxx.{regionId}.rmq.aliyuncs.com:8080";
//指定需要订阅哪个目标Topic,Topic需要提前在控制台创建,如果不创建直接使用会返回报错。
String topic = "Your Topic";
//为消费者指定所属的消费者分组,Group需要提前在控制台创建,如果不创建直接使用会返回报错。
String consumerGroup = "Your ConsumerGroup";
final ClientServiceProvider provider = ClientServiceProvider.loadService();
ClientConfigurationBuilder builder = ClientConfiguration.newBuilder().setEndpoints(endpoints);
/**
* 如果是使用公网接入点访问,configuration还需要设置实例的用户名和密码。用户名和密码在控制台实例详情页获取。
* 如果是在阿里云ECS内网访问,无需填写该配置,服务端会根据内网VPC信息智能获取。
*/
builder.setCredentialProvider(new StaticSessionCredentialsProvider("Instance UserName", "Instance Password"));
ClientConfiguration clientConfiguration = builder.build();
//订阅消息的过滤规则,表示订阅所有Tag的消息。
String tag = "*";
FilterExpression filterExpression = new FilterExpression(tag, FilterExpressionType.TAG);
//初始化PushConsumer,需要绑定消费者分组ConsumerGroup、通信参数以及订阅关系。
PushConsumer pushConsumer = provider.newPushConsumerBuilder()
.setClientConfiguration(clientConfiguration)
//设置消费者分组。
.setConsumerGroup(consumerGroup)
//设置预绑定的订阅关系。
.setSubscriptionExpressions(Collections.singletonMap(topic, filterExpression))
//设置消费监听器。
.setMessageListener(messageView -> {
//处理消息并返回消费结果。
// LOGGER.info("Consume message={}", messageView);
System.out.println("Consume Message: " + messageView);
return ConsumeResult.SUCCESS;
})
.build();
Thread.sleep(Long.MAX_VALUE);
//如果不需要再使用PushConsumer,可关闭该进程。
//pushConsumer.close();
}
}在IDEA中打开已创建的Java工程,在src/main/java路径下创建一个Java类。
将Java类的内容替换为云消息队列 RocketMQ 版提供的消息发送代码。示例代码如下:
参考下表修改消费者示例代码中的参数值。以下参数仅为示例值,需要修改为您实际使用的参数值。
参数
示例
说明
endpoints
rmq-cn-******.cn-hangzhou.rmq.aliyuncs.com:8080
实例的公网接入点。
可从云消息队列 RocketMQ 版控制台实例详情页的TCP 协议接入点页签中获取。
本教程以公网环境接入为例,若您使用VPC网络接入,则接入点需要填写为VPC专有网络接入点。
topic
topic_normal
已创建的Topic的名称,表示消费者需要订阅指定的Topic的消息。
可从云消息队列 RocketMQ 版控制台的Topic 管理页面查看。
consumerGroup
GID_test
已创建的Group的ID,表示消费者使用该消费者分组订阅指定的Topic。
可从云消息队列 RocketMQ 版控制台的Group 管理页面查看。
Instance UserName
21Vshz0YD9******
本教程以公网环境接入为例,因此该参数填写为实例用户名。
可从云消息队列 RocketMQ 版控制台的实例详情页面的运行信息区域查看。
若使用VPC接入,则无需配置该参数。
Instance Password
VrQCx2xr9a******
本教程以公网环境接入为例,因此该参数填写为实例密码。
可从云消息队列 RocketMQ 版控制台的实例详情页面的运行信息区域查看。
若使用VPC接入,则无需配置该参数。
参数修改完成后,运行消费者示例代码,启动消费者客户端。返回类似如下信息,表示消费者客户端已接入云消息队列 RocketMQ 版服务端。
此操作为第一次启动消费者,此时生产者还未接入服务端,因此还未获取到消息为正常结果。
package doc; import org.apache.rocketmq.client.apis.*;
import org.apache.rocketmq.client.apis.message.Message;
import org.apache.rocketmq.client.apis.producer.Producer;
import org.apache.rocketmq.client.apis.producer.SendReceipt; public class ProducerExample {
public static void main(String[] args) throws ClientException {
/**
* 实例接入点,从控制台实例详情页的接入点页签中获取。
* 如果是在阿里云ECS内网访问,建议填写VPC接入点。
* 如果是在本地公网访问,或者是线下IDC环境访问,可以使用公网接入点。使用公网接入点访问,必须开启实例的公网访问功能。
*/
String endpoints = "rmq-cn-xxx.{regionId}.rmq.aliyuncs.com:8080";
//消息发送的目标Topic名称,需要提前在控制台创建,如果不创建直接使用会返回报错。
String topic = "Your Topic";
ClientServiceProvider provider = ClientServiceProvider.loadService();
ClientConfigurationBuilder builder = ClientConfiguration.newBuilder().setEndpoints(endpoints);
/**
* 如果是使用公网接入点访问,configuration还需要设置实例的用户名和密码。用户名和密码在控制台实例详情页获取。
* 如果是在阿里云ECS内网访问,无需填写该配置,服务端会根据内网VPC信息智能获取。
*/
builder.setCredentialProvider(new StaticSessionCredentialsProvider("Instance UserName", "Instance Password"));
ClientConfiguration configuration = builder.build();
/**
* 初始化Producer时直接配置需要使用的Topic列表(这个参数可以配置多个Topic),实现提前检查错误配置、拦截非法配置启动。
* 针对非事务消息 Topic,也可以不配置,服务端会动态检查消息的Topic是否合法。
* 注意!!!事务消息Topic必须提前配置,以免事务消息回查接口失败,具体原理请参见事务消息。
*/
Producer producer = provider.newProducerBuilder()
.setTopics(topic)
.setClientConfiguration(configuration)
.build();
//普通消息发送。
Message message = provider.newMessageBuilder()
.setTopic(topic)
//设置消息索引键,可根据关键字精确查找某条消息。
.setKeys("messageKey")
//设置消息Tag,用于消费端根据指定Tag过滤消息。
.setTag("messageTag")
//消息体。
.setBody("messageBody".getBytes())
.build();
try {
//发送消息,需要关注发送结果,并捕获失败等异常。
SendReceipt sendReceipt = producer.send(message);
System.out.println(sendReceipt.getMessageId());
} catch (ClientException e) {
e.printStackTrace();
}
}
}参考下表修改生产者示例代码中的参数值。以下参数仅为示例值,需要修改为您实际使用的参数值。
参数
示例
说明
endpoints
rmq-cn-******.cn-hangzhou.rmq.aliyuncs.com:8080
实例的公网接入点。
可从云消息队列 RocketMQ 版控制台实例详情页的TCP 协议接入点页签中获取。
本教程以公网环境接入为例,若您使用VPC网络接入,则接入点需要填写为VPC专有网络接入点。
topic
topic_normal
已创建的Topic的名称,表示生产者向哪个Topic发送消息。
可从云消息队列 RocketMQ 版控制台的Topic管理页面查看。
Instance UserName
21Vshz0YD9******
本教程以公网环境接入为例,因此该参数填写为实例用户名。
可从云消息队列 RocketMQ 版控制台的实例详情页面的运行信息区域查看。
若使用VPC接入,则无需配置该参数。
Instance Password
VrQCx2xr9a******
本教程以公网环境接入为例,因此该参数填写为实例密码。
可从云消息队列 RocketMQ 版控制台的实例详情页面的运行信息区域查看。
若使用VPC接入,则无需配置该参数。
参数修改完成后,运行生产者示例代码,启动生产者客户端发送消息。返回类似如下信息,表示生产者客户端已接入云消息队列 RocketMQ 版服务端并成功发送消息。
在IDEA中打开已创建的Java工程,在src/main/java路径下创建一个Java类。
将Java类的内容替换为云消息队列 RocketMQ 版提供的消息发送代码。示例代码如下:
package doc; import org.apache.rocketmq.client.apis.*;
import org.apache.rocketmq.client.apis.message.Message;
import org.apache.rocketmq.client.apis.producer.Producer;
import org.apache.rocketmq.client.apis.producer.SendReceipt; public class ProducerExample {
public static void main(String[] args) throws ClientException {
/**
* 实例接入点,从控制台实例详情页的接入点页签中获取。
* 如果是在阿里云ECS内网访问,建议填写VPC接入点。
* 如果是在本地公网访问,或者是线下IDC环境访问,可以使用公网接入点。使用公网接入点访问,必须开启实例的公网访问功能。
*/
String endpoints = "rmq-cn-xxx.{regionId}.rmq.aliyuncs.com:8080";
//消息发送的目标Topic名称,需要提前在控制台创建,如果不创建直接使用会返回报错。
String topic = "Your Topic";
ClientServiceProvider provider = ClientServiceProvider.loadService();
ClientConfigurationBuilder builder = ClientConfiguration.newBuilder().setEndpoints(endpoints);
/**
* 如果是使用公网接入点访问,configuration还需要设置实例的用户名和密码。用户名和密码在控制台实例详情页获取。
* 如果是在阿里云ECS内网访问,无需填写该配置,服务端会根据内网VPC信息智能获取。
*/
builder.setCredentialProvider(new StaticSessionCredentialsProvider("Instance UserName", "Instance Password"));
ClientConfiguration configuration = builder.build();
/**
* 初始化Producer时直接配置需要使用的Topic列表(这个参数可以配置多个Topic),实现提前检查错误配置、拦截非法配置启动。
* 针对非事务消息 Topic,也可以不配置,服务端会动态检查消息的Topic是否合法。
* 注意!!!事务消息Topic必须提前配置,以免事务消息回查接口失败,具体原理请参见事务消息。
*/
Producer producer = provider.newProducerBuilder()
.setTopics(topic)
.setClientConfiguration(configuration)
.build();
//普通消息发送。
Message message = provider.newMessageBuilder()
.setTopic(topic)
//设置消息索引键,可根据关键字精确查找某条消息。
.setKeys("messageKey")
//设置消息Tag,用于消费端根据指定Tag过滤消息。
.setTag("messageTag")
//消息体。
.setBody("messageBody".getBytes())
.build();
try {
//发送消息,需要关注发送结果,并捕获失败等异常。
SendReceipt sendReceipt = producer.send(message);
System.out.println(sendReceipt.getMessageId());
} catch (ClientException e) {
e.printStackTrace();
}
}
}参考下表修改生产者示例代码中的参数值。以下参数仅为示例值,需要修改为您实际使用的参数值。
参数
示例
说明
endpoints
rmq-cn-******.cn-hangzhou.rmq.aliyuncs.com:8080
实例的公网接入点。
可从云消息队列 RocketMQ 版控制台实例详情页的TCP 协议接入点页签中获取。
本教程以公网环境接入为例,若您使用VPC网络接入,则接入点需要填写为VPC专有网络接入点。
topic
topic_normal
已创建的Topic的名称,表示生产者向哪个Topic发送消息。
可从云消息队列 RocketMQ 版控制台的Topic管理页面查看。
Instance UserName
21Vshz0YD9******
本教程以公网环境接入为例,因此该参数填写为实例用户名。
可从云消息队列 RocketMQ 版控制台的实例详情页面的运行信息区域查看。
若使用VPC接入,则无需配置该参数。
Instance Password
VrQCx2xr9a******
本教程以公网环境接入为例,因此该参数填写为实例密码。
可从云消息队列 RocketMQ 版控制台的实例详情页面的运行信息区域查看。
若使用VPC接入,则无需配置该参数。
参数修改完成后,运行生产者示例代码,启动生产者客户端发送消息。返回类似如下信息,表示生产者客户端已接入云消息队列 RocketMQ 版服务端并成功发送消息。
查看消息消费结果
消息发送成功后,将运行结果窗口切换到消息订阅运行程序中,会看到返回如下消费结果,您可以根据返回的消息ID在控制台查询消息轨迹。

查询消息轨迹
登录云消息队列 RocketMQ 版控制台,在左侧导航栏,选择实例列表。
在顶部菜单栏,选择和试用实例相同的地域。
在实例列表页面单击试用实例的名称。
在左侧导航栏单击消息轨迹,然后单击创建查询任务。
在创建消息轨迹查询任务面板中选择消息所属的Topic、选择查询方式为Message ID 查询、输入在消费结果中获取到的Message ID,然后单击确定创建查询任务。

刷新页面,待查询任务的状态变为查询完成,然后在其操作列单击查询结果。
在查询结果页面中,单击查询结果列表操作列的消息轨迹。
您可以在轨迹详情页面查看指定消息在各阶段的详细状态。
各返回参数的详细信息,请参见轨迹参数说明。
本教程使用的标准版实例只能免费试用1个月。试用期结束后您可以选择释放实例或一键转包年包月,否则超过有效期的部分将会按照按量付费方式进行计费。
如果您无需使用云消息队列 RocketMQ 版,请按照如下操作及时清理和释放资源。
登录云消息队列RocketMQ版控制台,在左侧导航栏选择实例列表。
在顶部菜单栏选择试用实例所在的地域,然后在目标试用实例所在的操作列选择更多>释放。
在弹出的对话框中单击确定。
如果您需要继续使用云消息队列 RocketMQ 版,可以将该试用实例转为包年包月计费类型。
登录云消息队列RocketMQ版控制台,在左侧导航栏选择实例列表。
在顶部菜单栏选择试用实例所在的地域,然后在目标试用实例所在的付费类型列选择转包年包月。
按照界面提示完成购买。
常用知识点
问题1:如果使用本地网络访问云消息队列 RocketMQ 版服务,SDK代码中的接入点(endpoints)应该填写哪个?(单选题)
- VPC专有网络接入点
- 公网接入点
问题2:发送普通消息时,创建的Topic的消息类型是什么?(单选题)
- 普通消息
- 顺序消息
- 事务消息
- 定时/延时消息
延伸阅读
RocketMQ版控制台,在左侧的更多相关文章
- RocketMQ可视化控制台
中午文档 https://github.com/apache/rocketmq-externals/blob/master/rocketmq-console/doc/1_0_0/UserGuide_C ...
- rocketmq实现延迟队列(精确到秒级)
最近项目里需要在延时队列,但是开源版本rocketmq不支持任意时间延时,造成有些任务无法执行 参考了网上的不少文章,但是都么有实现,所以再开源的基础上改造了个支持任意时间延时的队列. 源码地址: h ...
- 基于消息队列 RocketMQ 的大型分布式应用上云最佳实践
作者|绍舒 审核&校对:岁月.佳佳 编辑&排版:雯燕 前言 消息队列是分布式互联网架构的重要基础设施,在以下场景都有着重要的应用: 应用解耦 削峰填谷 异步通知 分布式事务 大数据处理 ...
- PC版淘宝UWP揭秘
经过第一轮内测后的bug数量:65 2015/11/27 - bug数量 = 60 2015/11/30 - bug数量 = 53 2015/12/1 - bug数量 = 49 2015/12/2 - ...
- C#版的MapReduce
如果不知道MapReduce是怎么工作的,请看这里,如果不知道MapReduce是什么,请google之! 今天“闲”来无事,忽想起C#里没有MapReduce的方法,构思之,coding之: #re ...
- windows搭建RocketMQ服务
写在前面: 1.基于rocketmq 4.2.0版本 2.64位 win10 系统 3.JDK 1.8 (注意,jdk路径一定不要有空格,不然执行相应的cmd命令时会报错) 4.其它需要的软件,mav ...
- RocketMQ 单机部署(单master模式)
一.为了快速了解rockmq,先搭建一个简单的单机版的rocketmq,前期准备:1.CentOS 7.6 64位(阿里云)(4G内存) 2.jdk1.8 3.maven 3.5.4 4.直接从官网上 ...
- 当 RocketMQ 遇上 Serverless,会碰撞出怎样的火花?
作者 | 元毅 阿里巴巴高级开发工程师 阿里巴巴云原生公众号后台回复 Knative,免费下载<Knative 云原生应用开发指南>电子书! 想必大家都比较了解 RocketMQ 消息服 ...
- rocketMq安装及集群配置
网上关于rocketMq安装.集群配置的文章有很多,作为一个初学者,跟着网上的各种教程安装遇到了各种坑,可谓是一路坎坷.本文记录下rocketMq安装的完整过程.希望对你有一点帮助 安装rocketM ...
- 大写的服,看完这篇你还不懂RocketMQ算我输
目录 RocketMQ介绍 RocketMQ概念 为什么要用RocketMQ? 异步解耦 削峰填谷 分布式事务最终一致性 数据分发 RocketMQ架构 RocketMQ消息类型 普通消息 顺序消息 ...
随机推荐
- 无缝数据转换!使用C++ 实现 Excel文件与CSV之间的相互转换
CSV格式是一种通用的文本文件格式,可在多个应用程序之间共享和使用.相比之下,Excel文件是一种电子表格格式,通常只能在Microsoft Excel中编辑和查看.因此,将Excel文件转换为CSV ...
- 使用Githud 实现分发IPA包遇到的坑
最近要用到测试包分发,首先想到了,蒲公英,但是把包扔上去,扫描下载的时候发现,现在需要用户登录才能下载,弃了. 又跑到fir ,发现还得实名才能用,还得上传各种证件照,而且好像每天只有10个下载量,. ...
- 分享一个Java功能小案例(代码已开源哦)
工程合集 工程列表 地址预览 B站 抖音
- Typecho左右侧广告区域展示恋爱线时间
该教程适用typecho动态博客框架,handsome主题,展示恋爱线时间,效果立于博客网页左侧右侧等区域,展示如下: 教程 typecho动态博客框架,handsome主题下,将下面代码粘贴到后台设 ...
- 图像格式及Matlab的格式转换
1. matlab图像保存说明 matlab中读取图片后保存的数据是uint8类型(8位无符号整数,即1个字节),以此方式存储的图像称作8位图像,好处相比较默认matlab数据类型双精度浮点doubl ...
- Linux0.11内核笔记(-)
基础知识 C语言.汇编知识.嵌入式汇编.x86处理器和编程的相关知识和.UNIX操作系统设计 Linus在最初开发Linux操作系统时参考了MINIX操作系统:<操作系统:设计与实现>一种 ...
- KVM 动态调整 qcow2 硬盘
动态扩容 参考:https://cloud-atlas.readthedocs.io/zh_CN/latest/kvm/kvm_vdisk_live.html 未关闭虚拟机,直接在宿主机器上qemu- ...
- 最新基于nonebot的qq机器人搭建
导读 核心资源 ( 参考各项目到各自release下载 NoneBot简介 | go-cqhttp 帮助中心qq登录需要包签名,要自己部署 https://github.com/fuqiuluo/un ...
- 【go语言】2.2.1 数组和切片
数组和切片是 Go 语言中常用的数据结构,它们都可以存储多个同类型的元素. 数组 数组是具有固定长度的数据类型,它的长度在定义时就已经确定,不能随意改变. 你可以使用以下方式定义一个数组: var a ...
- vulnhub billu:b0x
知识点 SQLi.目录爆破.数据库操作.文件包含漏洞.提权.反弹shell 解题步骤 nmap扫描有80,22端口 nmap -sV -Pn -T 4 192.168.220.132 访问网页提示sq ...