カテゴリ: Quarkus 更新日: 2026/02/06

QuarkusとAMQP連携の基本完全ガイド|RabbitMQ・ActiveMQで学ぶイベント駆動開発入門

QuarkusとAMQP(RabbitMQ/ActiveMQ)連携の基本
QuarkusとAMQP(RabbitMQ/ActiveMQ)連携の基本

Quarkus / AMQP / RabbitMQ / ActiveMQ / イベント駆動開発 / Reactive Messaging / Java 初心者向け


先生と生徒の会話形式で理解しよう

生徒

「Quarkusでイベント駆動開発をやりたいんですが、AMQPって何ですか?」

先生

「AMQPは、アプリ同士がメッセージをやり取りするための共通ルールです。QuarkusではRabbitMQやActiveMQと組み合わせて、イベント駆動開発ができます。」

生徒

「REST APIと何が違うんですか?」

先生

「リクエストを待つのではなく、出来事が起きたら自動で処理が流れる点が大きな違いです。順番に見ていきましょう。」

1. Quarkusにおけるイベント駆動開発とは

1. Quarkusにおけるイベント駆動開発とは
1. Quarkusにおけるイベント駆動開発とは

Quarkusのイベント駆動開発とは、ある出来事をきっかけに処理が自動で実行される設計手法です。 ユーザー登録、注文完了、データ更新などをイベントとして扱い、アプリ同士を疎結合に保てます。 従来の同期的なREST APIと異なり、処理の流れを止めずに非同期で動くため、スケーラブルで高速なシステムを構築できます。 クラウドネイティブやマイクロサービスと非常に相性が良い点も特徴です。

2. AMQPの基本概念をやさしく理解する

2. AMQPの基本概念をやさしく理解する
2. AMQPの基本概念をやさしく理解する

AMQPはメッセージングの共通仕様で、送信側と受信側の間にメッセージブローカーが存在します。 送信側はメッセージを投げるだけで、誰が受け取るかを意識しません。 受信側はキューに届いたメッセージを順番に処理します。 この仕組みにより、システム変更に強く、障害にも耐えやすい構成になります。

RabbitMQやActiveMQは、このAMQPを実装した代表的なメッセージブローカーです。

3. QuarkusとRabbitMQ・ActiveMQの関係

3. QuarkusとRabbitMQ・ActiveMQの関係
3. QuarkusとRabbitMQ・ActiveMQの関係

QuarkusではSmallRye Reactive Messagingを利用して、AMQPと簡単に連携できます。 RabbitMQやActiveMQの違いを意識せず、設定とアノテーションだけでメッセージ送受信が可能です。 Java初心者でも、シンプルなコードでイベント駆動開発を体験できます。

4. AMQP送信側の基本実装

4. AMQP送信側の基本実装
4. AMQP送信側の基本実装

まずはイベントを送信する側の基本コードです。 処理が完了したタイミングでメッセージを送信するイメージになります。


import jakarta.enterprise.context.ApplicationScoped;
import org.eclipse.microprofile.reactive.messaging.Channel;
import org.eclipse.microprofile.reactive.messaging.Emitter;

@ApplicationScoped
public class OrderEventProducer {

    @Channel("order-out")
    Emitter<String> emitter;

    public void sendOrder(String message) {
        emitter.send(message);
    }
}

このコードでは、注文が発生したというイベントをAMQPへ送信しています。 REST APIと違い、相手の処理を待たずに次の処理へ進めます。

5. AMQP受信側の基本実装

5. AMQP受信側の基本実装
5. AMQP受信側の基本実装

次はメッセージを受け取る側です。 キューにメッセージが届いた瞬間に、自動で処理が実行されます。


import jakarta.enterprise.context.ApplicationScoped;
import org.eclipse.microprofile.reactive.messaging.Incoming;

@ApplicationScoped
public class OrderEventConsumer {

    @Incoming("order-in")
    public void receive(String message) {
        System.out.println("受信した注文イベント: " + message);
    }
}

ポーリング処理を書かなくても、イベントが届けば自動的に動く点が大きな特徴です。

6. application.propertiesの基本設定

6. application.propertiesの基本設定
6. application.propertiesの基本設定

Quarkusでは設定ファイルに接続情報を書くだけで、AMQPと連携できます。 初心者でも設定の全体像を把握しやすいのが魅力です。


mp.messaging.outgoing.order-out.connector=smallrye-amqp
mp.messaging.outgoing.order-out.address=orders

mp.messaging.incoming.order-in.connector=smallrye-amqp
mp.messaging.incoming.order-in.address=orders

amqp-host=localhost
amqp-port=5672
amqp-username=guest
amqp-password=guest

7. イベント駆動開発で得られるメリット

7. イベント駆動開発で得られるメリット
7. イベント駆動開発で得られるメリット

QuarkusとAMQPを組み合わせることで、処理の分離、拡張のしやすさ、障害耐性が向上します。 新しい機能を追加しても、既存システムに影響を与えにくくなります。 特にマイクロサービス構成では、この考え方が大きな力を発揮します。

8. 初心者がつまずきやすいポイント

8. 初心者がつまずきやすいポイント
8. 初心者がつまずきやすいポイント

メッセージが届かない場合は、キュー名や設定の不一致が原因であることが多いです。 まずは送信と受信で同じアドレスを使っているかを確認しましょう。 ローカル環境ではRabbitMQの起動忘れにも注意が必要です。

カテゴリの一覧へ
新着記事
New1
Quarkus
Quarkusのフォーム認証を基礎から解説!初心者向けセキュリティ入門ガイド
New2
Micronaut
MicronautプロジェクトをGradleで管理する基礎!build.gradleの役割を解説
New3
Micronaut
LinuxでMicronautをセットアップする方法!パッケージ管理とGradle連携
New4
Java
Javaのswitch文を徹底解説!case・defaultの書き方と実例まとめ
人気記事
No.1
Java&Spring記事人気No1
Quarkus
Quarkusプロジェクト構成の基本を完全解説!初心者でも迷わない「どこに何を書くか」ガイド
No.2
Java&Spring記事人気No2
Quarkus
QuarkusとMicronautとHelidonを徹底比較!軽量Javaフレームワークの違いを初心者向けに解説
No.3
Java&Spring記事人気No3
Quarkus
Quarkusのセキュリティ基礎を初心者でもわかるように解説!
No.4
Java&Spring記事人気No4
Quarkus
Quarkusでマイクロサービス開発が加速する理由を徹底解説!Java初心者でも分かるクラウドネイティブ
No.5
Java&Spring記事人気No5
Quarkus
Quarkusの開発環境構築で躓きやすいポイントを完全解説!初心者でも安心して始めるためのチェックガイド
No.6
Java&Spring記事人気No6
Micronaut
MicronautとSpring Bootの違いとは?アーキテクチャ比較で速さの秘密を理解する
No.7
Java&Spring記事人気No7
Micronaut
Micronautのアプリケーション起動が速い理由を初心者向けに解説
No.8
Java&Spring記事人気No8
Micronaut
MicronautのAOPが高速な理由とは?コンパイル時AOPの仕組みを初心者向けに徹底解説