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

QuarkusとKafkaで始めるイベント駆動開発入門!初心者でもできる最初のメッセージ送受信

Quarkus + Kafkaのセットアップと最初のメッセージ送受信
Quarkus + Kafkaのセットアップと最初のメッセージ送受信

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

生徒

「Quarkusでイベント駆動開発ができるって聞いたんですが、Kafkaって何をするものなんですか?」

先生

「QuarkusではKafkaを使って、アプリ同士がメッセージを送り合う仕組みを簡単に作れます。画面の操作とは別に、裏側で処理をつなぐのが特徴です。」

生徒

「設定とか難しそうで不安です……」

先生

「順番に進めれば大丈夫です。QuarkusとKafkaを使った最初のメッセージ送受信を一緒に体験してみましょう。」

1. QuarkusとKafkaによるイベント駆動開発とは

1. QuarkusとKafkaによるイベント駆動開発とは
1. QuarkusとKafkaによるイベント駆動開発とは

Quarkusのイベント駆動開発は、処理を直接呼び出すのではなく、イベントやメッセージを介して連携する考え方です。Kafkaは分散メッセージング基盤として広く使われており、大量のデータを安全にやり取りできます。QuarkusとKafkaを組み合わせることで、Javaでも軽量かつ高速なイベント駆動アプリケーションを構築できます。

従来の同期的な処理では、片方が止まると全体に影響が出やすくなります。一方、Kafkaを使った非同期な構成では、送信側と受信側が疎結合になり、システム全体の安定性が高まります。初心者にとっても、考え方を理解することで設計の幅が広がります。

2. Kafkaを使う前に知っておきたい基本用語

2. Kafkaを使う前に知っておきたい基本用語
2. Kafkaを使う前に知っておきたい基本用語

Kafkaを扱う際には、いくつかの基本的な用語を押さえておく必要があります。メッセージを送る側をプロデューサー、受け取る側をコンシューマーと呼びます。メッセージはトピックという箱のような単位に格納されます。

Quarkusでは、これらをコードで細かく意識しなくても設定ファイルとアノテーションで扱えます。難しい仕組みを内部で肩代わりしてくれるのがQuarkusの強みです。まずは「送る」「受け取る」という流れを理解することが大切です。

3. QuarkusとKafkaの開発環境を準備する

3. QuarkusとKafkaの開発環境を準備する
3. QuarkusとKafkaの開発環境を準備する

QuarkusとKafkaを試すには、JavaとMavenが動作する環境があれば十分です。Kafka自体はローカルで簡易的に起動できますし、Quarkusの開発モードを使えばすぐに動作確認ができます。ここでは初心者向けに、最小構成で進めます。

Quarkusプロジェクト作成時にKafka関連の拡張機能を追加しておくと、後の設定が楽になります。これにより、Kafkaとの接続やメッセージ処理が自動的に有効化されます。

4. Kafkaへのメッセージ送信を実装する

4. Kafkaへのメッセージ送信を実装する
4. Kafkaへのメッセージ送信を実装する

まずはQuarkusからKafkaへメッセージを送る処理を作ります。送信処理は非常にシンプルで、決められたインターフェースを使って文字列を送信するだけです。これにより、イベントを発生させる側の役割を体験できます。


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

@ApplicationScoped
public class MessageProducer {

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

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

このコードでは、Kafkaのトピックに対応するチャネルへ文字列を送信しています。アプリケーションの中からイベントを投げるイメージを持つと理解しやすくなります。

5. Kafkaからメッセージを受信する

5. Kafkaからメッセージを受信する
5. Kafkaからメッセージを受信する

次に、Kafkaからメッセージを受信する側を実装します。受信処理もアノテーションを付けるだけで定義できます。Kafkaの複雑な設定を意識せず、メッセージが届いたら何をするかに集中できます。


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

@ApplicationScoped
public class MessageConsumer {

    @Incoming("sample-in")
    public void receive(String message) {
        System.out.println("受信したメッセージ: " + message);
    }
}

メッセージがKafkaに届くと、このメソッドが自動的に呼ばれます。イベント駆動開発では、この「何かが起きたら処理する」という考え方が中心になります。

6. application.propertiesでKafka接続を設定する

6. application.propertiesでKafka接続を設定する
6. application.propertiesでKafka接続を設定する

Quarkusでは設定ファイルにKafkaの接続情報を書くだけで利用できます。トピック名やブローカーのアドレスを指定することで、送受信のひも付けが行われます。初心者でも設定内容を追いやすいのが特徴です。


quarkus.kafka.devservices.enabled=true
mp.messaging.outgoing.sample-out.connector=smallrye-kafka
mp.messaging.outgoing.sample-out.topic=sample-topic

mp.messaging.incoming.sample-in.connector=smallrye-kafka
mp.messaging.incoming.sample-in.topic=sample-topic

この設定により、同じトピックを通してメッセージの送受信が成立します。開発環境では自動でKafkaが起動するため、手動操作は不要です。

7. 動作確認とイベント駆動の流れを理解する

7. 動作確認とイベント駆動の流れを理解する
7. 動作確認とイベント駆動の流れを理解する

最後に、送信メソッドを呼び出してメッセージが受信されるかを確認します。ログに出力された文字列を見ることで、イベントが正しく流れていることを実感できます。画面操作がなくても処理が進む点がイベント駆動開発の大きな特徴です。


public class SampleRunner {

    public static void main(String[] args) {
        MessageProducer producer = new MessageProducer();
        producer.send("Hello Kafka with Quarkus");
    }
}

受信したメッセージ: Hello Kafka with Quarkus

このように、QuarkusとKafkaを使うと、シンプルなコードでイベント駆動開発の第一歩を踏み出せます。複雑な仕組みは内部に隠されているため、初心者でも全体像をつかみやすくなっています。

カテゴリの一覧へ
新着記事
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のセキュリティ基礎を初心者でもわかるように解説!
No.3
Java&Spring記事人気No3
Quarkus
QuarkusとMicronautとHelidonを徹底比較!軽量Javaフレームワークの違いを初心者向けに解説
No.4
Java&Spring記事人気No4
Quarkus
Quarkusでマイクロサービス開発が加速する理由を徹底解説!Java初心者でも分かるクラウドネイティブ
No.5
Java&Spring記事人気No5
Micronaut
MicronautとSpring Bootの違いとは?アーキテクチャ比較で速さの秘密を理解する
No.6
Java&Spring記事人気No6
Quarkus
Quarkusの開発環境構築で躓きやすいポイントを完全解説!初心者でも安心して始めるためのチェックガイド
No.7
Java&Spring記事人気No7
Java
Javaのboolean型の使い方を完全ガイド!真偽値と条件分岐の基本
No.8
Java&Spring記事人気No8
Micronaut
MicronautのAOPが高速な理由とは?コンパイル時AOPの仕組みを初心者向けに徹底解説