Java RabbitMQのワークモードは、複数のコンシューマを構成して単一のキューからメッセージを消費し、メッセージの並行処理速度を向上させることができます。アーキテクチャは以下の図のようになります。
注意:RabbitMQでどのワークモードを使用しても、各キューは複数のコンシューマをサポートします。同じキューに対して、メッセージは1つのコンシューマのみによって処理されます。
1. 初めにチュートリアルを読む
関連する知識を理解するために、最初に以下のセクションを読んでください。
- RabbitMQ基本概念
- RabbitMQワークモード
- JavaのRabbitMQクイックスタート (後続のセクションではコードを繰り返し表示せず、主要なコードのみを表示するため、必須です)
2. 複数のコンシューマを構成する
RabbitListenerアノテーションを使用し、concurrencyパラメータを設定することで、以下のコードで10個のコンシューマを同時にメッセージ処理できます。
package com.tizi365.rabbitmq.listener;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
@Component
// メッセージリスナーを宣言し、queuesパラメータを使用してリスニングするキューを指定する
// 主要なパラメータ:concurrencyは、現在のリスナーの開始が必要なコンシューマの数を表し、そのタイプは文字列です
@RabbitListener(queues = "hello", concurrency = "10")
public class HelloListener {
// RabbitHandlerを使用してメッセージハンドラをマークし、メッセージ処理ロジックを実行するために使用します
@RabbitHandler
public void receive(String msg) {
System.out.println("コンシューマ - メッセージを受信しました '" + msg + "'");
}
}