このトピックでは、TCPクライアントSDK for Javaを使用してApsaraMQ for RocketMQテストプロジェクトを構築する方法について説明します。 デモプロジェクトでは、通常のメッセージ、順序付けられたメッセージ、トランザクションメッセージ、スケジュールされたメッセージ、遅延メッセージのサンプルコードを提供します。 デモプロジェクトでは、テスト用のSpring構成も提供します。
前提条件
統合開発環境 (IDE) がインストールされています。
IntelliJ IDEAまたはEclipseを使用できます。 このトピックの例では、IntelliJ IDEAを使用しています。
IntelliJ IDEA Ultimate Editionがダウンロードされ、インストールされていることを確認します。 詳細については、ダウンロードページをご覧ください。
デモプロジェクトパッケージがダウンロードされます。
デモプロジェクトパッケージをダウンロードし、ローカルマシンに解凍します。 rocketmq-demo-masterという名前のフォルダが作成されます。 このフォルダーには、Java、Spring、およびSpring Bootのサンプルコードが含まれています。 詳細については、「rocketmq-demo」をご参照ください。
Java Development Kit (JDK) がインストールされています。 詳細については、「Javaダウンロード」をご参照ください。
デモプロジェクトの設定
デモプロジェクトファイルをIntelliJ IDEAにインポートします。
リソースを作成します。
Message Queue for Apache RocketMQコンソールに移動し、インスタンス、トピック、コンシューマーグループ、AccessKey ID (AK) 、AccessKey secret (SK) などのリソースを作成します。
詳細については、「リソースの作成」 をご参照ください。
デモを構成します。
手順2で作成したリソースに関する情報に基づいて、
MqConfig
クラスとcommon.xmlファイルを設定します。pom.xmlファイルを変更します。 TCPクライアントSDK for Javaのバージョンを最新バージョンに変更することを推奨します。 SDKのバージョンについては、「リリースノート」をご参照ください。
<dependency> <groupId>com.aliyun.openservices</groupId> <artifactId>ons-client</artifactId> <!--We recommend that you replace the following version number with the latest version number of the TCP client SDK for Java--> <version>1.8.8.5.Final</version> </dependency>
次のサンプルコードを参照して、
MqConfig
クラスを設定します。public static final String TOPIC = "The topic that you created"; public static final String GROUP_ID = "The consumer group that you created"; public static final String ORDER_TOPIC = "The topic that you created to send and receive ordered messages"; public static final String GROUP_ID = "The consumer group that you created to send and receive ordered messages"; public static final String ACCESS_KEY = "The AccessKey ID of your Alibaba Cloud account". For information about how to obtain an AccessKey ID, see Create an AccessKey pair"; public static final String SECRET_KEY = "The AccessKey secret of your Alibaba Cloud account. For information about how to obtain an AccessKey secret, see Create an AccessKey pair"; public static final String TAG = "The custom tag of the message"; public static final String NAMESRV_ADDR = "The TCP endpoint that can be used to access your Message Queue for Apache RocketMQ instance. You can view the endpoint in the TCP Endpoint section of the Instance Details page in the Message Queue for Apache RocketMQ console;
説明作成したトピックに対する権限を付与されたRAMユーザーのAccessKeyペアを使用することもできます。
詳細については、「メソッドとパラメーター」をご参照ください。
common.xmlファイルを設定します。
<props> <prop key="AccessKey">XXX</prop> <!-- Modify the values based on your resources. --> <prop key="SecretKey">XXX</prop> <prop key="GROUP_ID">XXX</prop> <prop key="Topic">XXX</prop> <prop key="NAMESRV_ADDR">XXX</prop> </props>
mainメソッドを呼び出してデモを実行する
メッセージを送信します。
通常のメッセージを送信する:
Java:
SimpleMQProducer
クラスを実行します。Spring:
ProducerClient
クラスを実行します。
トランザクションメッセージの送信:
Java:
SimpleTransactionProducer
クラスを実行します。LocalTransactionCheckerImpl
クラスは、ローカルトランザクションのステータスを確認するために使用されます。 詳細については、「トランザクションメッセージの送受信」をご参照ください。Spring:
TransactionProducerClient
クラスを実行します。Spring Boot:
TransactionProducerClient
クラスを実行します。
注文メッセージを送信する:
Java:
SimpleOrderProducer
クラスを実行します。Spring:
OrderProducerClient
クラスを実行します。Spring Boot:
OrderProducerClient
クラスを実行します。
順序付けられたメッセージは、先入れ先出し (FIFO) 順序で送信され、消費される。 詳細については、「順序付けられたメッセージの送信とサブスクライブ」をご参照ください。
スケジュール済みメッセージと遅延済みメッセージの送信:
MQTimerProducer
クラスを実行します。 メッセージは3秒の遅延後に配信されます。これらのメッセージを配信する遅延時間を指定することもできます。 遅延時間の最大値は40日です。 詳細については、「スケジュールされたメッセージの送受信」をご参照ください。
ApsaraMQ for RocketMQコンソールで、トピックごとにメッセージを照会します。 メッセージがトピックに送信されたことを確認できます。
メッセージを受信します。
通常のメッセージを受信する:
Java:
SimpleMQConsumer
クラスを実行します。Spring:
ConsumerClient
クラスを実行します。Spring Boot:
ConsumerClient
クラスを実行します。
トランザクションメッセージの受信:
Java:
SimpleMQConsumer
クラスを実行します。Spring:
ConsumerClient
クラスを実行します。Spring Boot:
ConsumerClient
クラスを実行します。
注文メッセージを受信する:
Java:
SimpleOrderConsumer
クラスを実行します。Spring:
OrderConsumerClient
クラスを実行します。Spring Boot:
OrderConsumerClient
クラスを実行します。
スケジュール済みメッセージと遅延済みメッセージの受信:
SimpleMQConsumer
クラスを実行します。説明SpringおよびSpring Bootは、スケジュールおよび遅延メッセージの送信をサポートしていません。
ログが印刷されます。 ログは、メッセージが受信されたことを示す。 クラスの初期化を完了するには数秒かかります。 本番環境では、クラスの初期化はめったに行われません。
結果の確認: ApsaraMQ for RocketMQコンソールでコンシューマーのステータスを表示します。 開始したコンシューマーがオンラインで、同じトピックを購読していることがわかります。