针对初次接触云消息队列 RocketMQ 版的工程师,本文以TCP协议下的Java SDK为例,提供操作示例帮助您从零开始搭建云消息队列 RocketMQ 版测试工程。Demo工程包含普通消息、顺序消息、事务消息、定时和延时消息的测试代码,以及相关Spring的配置。
前提条件
- 安装IDE。
您可以使用IntelliJ IDEA或者Eclipse,本文以IntelliJ IDEA为例。
请下载IntelliJ IDEA Ultimate版本,并参见IntelliJ IDEA说明进行安装。更多信息,请参见下载地址。
- 下载Demo工程。
下载到本地并解压后即可看到本地新增了mq-demo-master文件夹,该文件夹包括纯Java、Spring以及Spring Boot的示例代码。更多信息,请参见rocketmq-demo。
- 下载安装JDK。更多信息,请参见JDK下载地址。
配置Demo工程
- 将Demo工程文件导入IntelliJ IDEA。
- 创建资源。
您需要先到消息队列RocketMQ版控制台创建所需资源,包括实例、Topic、Group ID(GID),以及鉴权需要的AccessKey ID(AK)和AccessKey Secret(SK)。
更多详细信息和操作指导,请参见创建资源。
- 配置Demo。您需将在步骤2中创建好的资源信息配置到
MqConfig
类和common.xml文件中。
以Main方式运行Demo
- 发送消息。
- 发送普通消息:
- 以纯Java方式发送普通消息:运行
SimpleMQProducer
类。 - 以Spring方式发送普通消息:运行
ProducerClient
类。
- 以纯Java方式发送普通消息:运行
- 发送事务消息:
- 以纯Java方式发送事务消息:运行
SimpleTransactionProducer
类。LocalTransactionCheckerImpl
类为本地事务check接口类,用于校验事务。更多信息,请参见收发事务消息。 - 以Spring方式发送事务消息:运行
TransactionProducerClient
类。 - 以Spring Boot方式发送事务消息:运行
TransactionProducerClient
类。
- 以纯Java方式发送事务消息:运行
- 发送顺序消息:
- 以纯Java方式发送顺序消息:运行
SimpleOrderProducer
类。 - 以Spring方式发送顺序消息:运行
OrderProducerClient
类。 - 以Spring Boot方式发送顺序消息:运行
OrderProducerClient
类。
此方式下,消息发布和消费都按顺序进行。更多信息,请参见收发顺序消息。
- 以纯Java方式发送顺序消息:运行
- 发送定时和延时消息:运行
MQTimerProducer
类发送消息。延时3秒后投递。您也可以指定一个精确的投递时间,最长定时时间为40天。更多信息,请参见收发定时消息。
在云消息队列 RocketMQ 版控制台,按Topic查询消息,可以看到消息已经发送至Topic。 - 发送普通消息:
- 接收消息。
- 接收普通消息:
- 以纯Java方式接收普通消息:运行
SimpleMQConsumer
类。 - 以Spring方式接收普通消息:运行
ConsumerClient
类。 - 以Spring Boot方式接收普通消息:运行
ConsumerClient
类。
- 以纯Java方式接收普通消息:运行
- 接收事务消息:
- 以纯Java方式接收事务消息:运行
SimpleMQConsumer
类。 - 以Spring方式接收事务消息:运行
ConsumerClient
类。 - 以Spring Boot方式接收事务消息:运行
ConsumerClient
类。
- 以纯Java方式接收事务消息:运行
- 接收顺序消息:
- 以纯Java方式接收顺序消息:运行
SimpleOrderConsumer
类。 - 以Spring方式接收顺序消息:运行
OrderConsumerClient
类。 - 以Spring Boot方式接收顺序消息:运行
OrderConsumerClient
类。
- 以纯Java方式接收顺序消息:运行
- 接收定时和延时消息:运行
SimpleMQConsumer
类。说明 Spring和Spring Boot框架暂不支持收发定时和延时消息。
可以看到消息被接收打印的日志。因为有初始化,所以需等待几秒,在生产环境中不会经常初始化。 - 接收普通消息:
结果验证:在云消息队列 RocketMQ 版控制台,查看消费者状态,可以看到启动的消费端已经在线,并且订阅关系一致。