4. IBM Event Streamsのサンプルアプリケーションの使い方

前回の記事の続きです。

本記事ではIBM Event Streamsのサンプルアプリケーションの使い方を記述します。

1. [IBM Event Streamsのインストール方法](https://qiita.com/Gentaro7/items/5bc9676c87c70145991a)
1. [IBM Event Streamsのインスタンス作成方法](https://qiita.com/Gentaro7/items/a8900eefdafd3dc52bed)
1. [IBM Event StreamsのWebUIへのログイン方法](https://qiita.com/Gentaro7/items/46060353574c347d2dc6)
1. [IBM Event Streamsのサンプルアプリケーションの使い方](https://qiita.com/Gentaro7/items/df1e464de3cf6eee3e6b)(←本記事)
1. [IBM Event StreamsのGeoReplicatorの構成方法](https://qiita.com/Gentaro7/items/7196ca6cf3053c3de55b)
1. [IBM Event Streamsへの接続情報の確認方法](https://qiita.com/Gentaro7/items/99c82320be292a1fa896)

 
# はじめに

IBM Event Streamsは EventStreamsの動作を確認したり、実装サンプルを提供する目的でサンプルアプリケーション(Starter Application)を提供しています。

またサンプルアプリケーションのソースコードはGithubで公開されておりますので、アプリケーションを実装する際の参考にすることができます。

より詳しい情報はこちらを参照ください。

https://ibm.github.io/event-automation/es/es_10.1/getting-started/generating-starter-app/

Githubのリポジトリはこちらです。

https://github.com/ibm-messaging/kafka-java-vertx-starter

# 前提

- IBM Event Streamsインスタンスが作成済みであること
- IBM Event StreamsのWebUIにログインできること

まだの方は`2. IBM Event Streamsのインスタンス作成方法`と`3. IBM Event StreamsのWebUIへのログイン方法`を参照ください。

# IBM Event Streamsのサンプルアプリケーションの使い方

1. IBM Event StreamsインスタンスのWebUIにログイン


1. `Try the starter application`をクリック

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302134/9c134fde-25a8-59c3-855a-647c0c0bb055.png)


1. `Download JAR from Github`をクリック


    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302134/7fe13f59-7832-8a77-916e-45327ed47ba6.png)

1. 最新バージョン(Latest)の`demo-all.jar`ファイルをダウンロード

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302134/180ef690-53a3-cccd-7748-688b3f75e324.png)
    
1. 設定ファイルのダウンロード

    `Generate properties`をクリックします。
    
    その後、`Starter application name`と`Topic name`を入力して、`Generate and download .zip`ボタンをクリックして設定ファイルをダウンロードします。
    
    
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302134/0428ffe7-ed6b-08fb-27af-e1f7ddc18862.png)
    
    `Starter application name`はどんな名前でも問題ありません。今回は、`sample-app`とします。
    
    `Topic name`は、`New topic`の場合は、入力した名前で新しくTopicが作成されます。今回は新しくTopicを作成したいので、`New topic`でTopic名を`sample-topic-1`としました。
    
    `Existing Topic`を選んだ場合は、既存のTopicから選択することができます。
    
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302134/9e9357d0-9440-f6fa-edbb-290f9df26268.png)
    
    `<Starter application name>_properties.zip`というファイル名でダウンロードされます。
    
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302134/6efb8abb-dfbd-e7e1-d399-9f8ae8397377.png)
    

1. ダウンロードした設定ファイルの配置と解凍

    今回は`~/Work/starter-application`フォルダ配下に`demo-all.jar`と`sample-app_properties.zip`を配置しています。

    ```sh
    # sample-app_propertyies.zipがダウンロードした設定ファイルです。
    [~/Work/starter-application]$ ls
    demo-all.jar              sample-app_properties.zip
    
    # 設定ファイルを解凍します。
    [~/Work/starter-application]$ unzip sample-app_properties.zip 
    Archive:  sample-app_properties.zip
      inflating: truststore.p12          
      inflating: kafka.properties        
    
    # 解凍したファイルの確認
    [~/Work/starter-application]$ ls
    demo-all.jar              kafka.properties          sample-app_properties.zip truststore.p12
    ```


1. サンプルアプリケーションを起動

    `-Dproperties_path`オプションには、設定ファイルを解凍したディレクトリへのパスを指定します。
    
    `✅ Application started in XXXms`というメッセージがでればアプリケーションが起動しています。
    
    
    ```sh
    [~/Work/starter-application]$ java -Dproperties_path=./ -jar demo-all.jar
    2024-02-01 11:05:14,283 INFO [vert.x-eventloop-thread-0] kafka.vertx.demo.Main - Application version: 1.1.3
    2024-02-01 11:05:14,610 INFO [vert.x-eventloop-thread-1] kafka.vertx.demo.PeriodicProducer - 🚀 PeriodicProducer started
    2024-02-01 11:05:19,423 INFO [vert.x-eventloop-thread-2] kafka.vertx.demo.WebSocketServer - 🚀 WebSocketServer started
    2024-02-01 11:05:19,424 INFO [vert.x-eventloop-thread-0] kafka.vertx.demo.Main - ✅ Application started in 5244ms
    ```

1. サンプルアプリケーションへのアクセス

    [localhost:8080](http://localhost:8080)でアプリケーションが起動しています。
    
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302134/a2afe36a-b2ad-f389-5756-a87fcd6865f4.png)
    

1. Topicにメッセージを送信

    `Start producing`をクリックしてメッセージを送信します。
    
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302134/80b18f52-8802-8e71-00de-8a98966dc145.png)
    
    メッセージの送信が成功しています。
    
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302134/db820bee-bce0-419b-6e1f-c2ed2cd5a13a.png)
    
    
    `Stop producing`をクリックするとメッセージの送信を終了します。
    
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302134/b0a01237-d215-c578-4d68-23fd6ee5d221.png)
    
    
1. Topicからメッセージの読み取り

    `Start consuming`をクリックしてメッセージの読み取ります。
    
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302134/82fbf63d-0f87-b2d9-9b6c-a87bfac074dd.png)
    
    メッセージの読み取りが成功しています。
    
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302134/91591f66-afdf-4005-142e-bd47866fb55f.png)
    
    `Stop consuming`をクリックするとメッセージの読み取りを終了します
    
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302134/939b3bed-aaa5-56e4-8c46-6b53dc81e678.png)
    
1. Topic内のデータを確認

    WebUIからTopic内のデータを確認することができます。
    
    サイドメニューの`Topics`から`sample-topic-1`をクリックします。
    
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302134/86bb9cc2-d1a1-d1a3-80a2-610bb2e81ca0.png)
    
    
    先ほど送信したデータがTopicに入っていることが確認できます。
    
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302134/87e6b684-5f14-1e22-f85d-f423f60230d3.png)
    
    `Consumer groups`タブからこのTopicからデータを読み出しているConsumer groupを確認できます。
    
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302134/3480a1bd-9130-efe5-4209-8ef6e93df6ad.png)
    
    より詳細を確認したい`Consumer gourp`をクリックすると、このConsumer groupがどこまでデータを読み出したのかを確認することができます。
    
    今回は`Offset lag`が0になっているので、Topicに入っているすべてのデータを読み出し済みであることがわかります。
    
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302134/74be3a14-3d00-a2a5-71d7-77b667b706b5.png)
    

以上がIBM Event Streamsのサンプルアプリーションの使い方になります。

# 終わりに

本手順では、IBM Event Streamsのサンプルアプリケーションの使い方を記述しました。

次回は5. IBM Event StreamsのGeoReplicatorの構成方法を記述予定です。(随時作成中なので、しばらくお待ちください。)

不備不足等ございましたら、ご指摘いただければと思います。