針對初次接觸雲訊息佇列 RocketMQ 版的工程師,本文以TCP協議下的Java SDK為例,提供操作樣本協助您從零開始搭建雲訊息佇列 RocketMQ 版測試工程。Demo工程包含普通訊息、順序訊息、事務訊息、定時和延時訊息的測試代碼,以及相關Spring的配置。
前提條件
安裝IDE。
您可以使用IntelliJ IDEA或者Eclipse,本文以IntelliJ IDEA為例。
請下載IntelliJ IDEA Ultimate版本,並參見IntelliJ IDEA說明進行安裝。更多資訊,請參見下載地址。
下載Demo工程。
在訊息佇列RocketMQ版程式碼程式庫下載Demo工程到本地,然後解壓即可看到本地新增了mq-demo-master檔案夾。該檔案夾包括純Java、Spring以及Spring Boot的範例程式碼,本文以純Java的範例程式碼為例。
下載安裝JDK。更多資訊,請參見JDK下載地址。
配置Demo工程
將Demo工程檔案匯入IntelliJ IDEA。
在IntelliJ IDEA介面,選擇Import Project,選擇mq-demo-master/tcp/java-tcp-demo檔案夾。
選擇Import類型為Maven。
預設單擊Next,直到匯入完成。Demo工程需要載入依賴的JAR包,因此匯入處理程序需要等待2-3分鐘。
建立資源。
您需要先到訊息佇列RocketMQ版控制台建立所需資源,包括執行個體、Topic、Group ID(GID),以及鑒權需要的AccessKey ID(AK)和AccessKey Secret(SK)。
更多詳細資料和操作指導,請參見建立資源。
配置Demo。
修改pom.xml檔案。建議將ons-client版本號碼修改為最新版本。具體版本資訊,請參見版本說明。
<dependency> <groupId>com.aliyun.openservices</groupId> <artifactId>ons-client</artifactId> <!--建議替換為Java SDK的最新版本號碼--> <version>1.8.8.5.Final</version> </dependency>
您需將在步驟2中建立好的資源資訊配置到檔案:
MqConfig
類。public static final String TOPIC = "您已建立的Topic"; public static final String GROUP_ID = "您已建立的Group ID"; public static final String ORDER_TOPIC = "您已建立的用於收發順序訊息的Topic"; public static final String ORDER_GROUP_ID = "您已建立的用於收發順序訊息的Group ID"; public static final String ACCESS_KEY = "您的阿里雲帳號的AccessKey ID,擷取方式,請參見建立AccessKey"; public static final String SECRET_KEY = "您的阿里雲帳號的AccessKey Secret,擷取方式,請參見建立AccessKey"; public static final String TAG = "您自訂的訊息Tag屬性"; public static final String NAMESRV_ADDR = "您已建立的訊息佇列RocketMQ版執行個體的TCP存取點,可在訊息佇列RocketMQ版控制台執行個體詳情頁面的存取點地區查看";
說明如果RAM使用者擁有該Topic的許可權以及自己的AccessKey,那麼也可以使用RAM使用者的AccessKey。
參數與介面的更多資訊,請參見介面和參數說明。
以Main方式運行Demo
發送訊息。
發送普通訊息:運行
SimpleMQProducer
類。發送事務訊息:運行
SimpleTransactionProducer
類。LocalTransactionCheckerImpl
類為本地事務check介面類,用於校正事務。更多資訊,請參見收發事務訊息。發送順序訊息:運行
SimpleOrderProducer
類。此方式下,訊息發布和消費都按順序進行。更多資訊,請參見收發順序訊息。
發送定時和延時訊息:運行
MQTimerProducer
類發送訊息。延時3秒後投遞。您也可以指定一個精確的投遞時間,最長定時時間為40天。更多資訊,請參見收發定時訊息。
在雲訊息佇列 RocketMQ 版控制台,按Topic查詢訊息,可以看到訊息已經發送至Topic。
接收訊息。
接收普通訊息:運行
SimpleMQConsumer
類。接收事務訊息:運行
SimpleMQConsumer
類。接收順序訊息:運行
SimpleOrderConsumer
類。接收定時和延時訊息:運行
SimpleMQConsumer
類。說明Spring和Spring Boot架構暫不支援收發定時和延時訊息。
可以看到訊息被接收列印的日誌。因為有初始化,所以需等待幾秒,在生產環境中不會經常初始化。
結果驗證:在雲訊息佇列 RocketMQ 版控制台,查看消費者狀態,可以看到啟動的消費端已經線上,並且訂閱關係一致。