針對初次接觸云消息隊列 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
類。 - 以Spring Boot方式發送普通消息:運行
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 版控制臺,查看消費者狀態,可以看到啟動的消費端已經在線,并且訂閱關系一致。