Kyma イベンティングの使用

Creating a Subscription using Kyma Eventing

Objective

After completing this lesson, you will be able to サブスクリプションの作成

サブスクリプションの作成

前提条件

開始する前に、以下の前提条件が満たされていることを確認してください。

使用シナリオ

複数のイベントタイプにサブスクライブするサブスクリプションを作成し、SAP BTP, Kyma ランタイムでイベントを使用してワークロードをトリガします。

SAP BTP, Kyma ランタイムを使用してイベントにサブスクライブできることを学習した後、Subscription カスタムリソースを使用して複数のイベントタイプにサブスクライブすることで、この知識を実践します。また、イベントをトリガし、イベントが正常に配信されたことを確認します。

注記

無償版サービスを使用することを強くお奨めします。これは、無償利用枠に含まれていないサービスでは追加コストが発生するためです。

タスクフロー

この演習問題では、以下のステップを実行します。

  1. 新しい名称領域を設定します。
  2. 関数を作成します。
  3. さまざまなイベントタイプを使用してサブスクリプションを設定します。
  4. イベントを使用してワークロードをトリガします。
  5. イベント配信を確認します。

タスク 1: NATS バックエンドの設定

ステップ

  1. Kyma ダッシュボードで、モジュールの変更を選択します。

  2. イベンティングモジュールを選択し、Edit を選択します。

  3. バックエンドタイプとして NATS を選択します。

  4. 保存を選択します。

結果

バックアップされたタイプを選択すると、イベンティングモジュールのステータスは Ready になります。

タスク 2: 新規名称領域の登録

ステップ

  1. SAP BTP コックピットから、Kyma ダッシュボードへのリンクに従います。

  2. Namespaces に移動し、Create を選択します。

  3. 名前として eventing と入力し、作成を選択します。

結果

成功した場合は、新しい名前空間の名前空間の詳細が表示されます。名称領域のステータスは Active です。

タスク 3: 関数の作成

ステップ

  1. Kyma ダッシュボードで、前のタスクで作成した名前空間を選択します。

  2. Workload→s Functions に移動します。

    名前空間には関数がまだ含まれていません。

    関数の作成
  3. 作成を選択し、以下のパラメータを入力します。

    • 名称: lastorder
    • 言語: JavaScript
    • ランタイム: Node.js 20
  4. 関数のエディタのソースを置き換えます。

    JavaScript
    123456
    module.exports = { main: async function (event, context) { console.log("Received event:", event.data); return; } }
  5. 登録を選択します。

結果

成功した場合、数秒後、関数のステータスは Running になります。

タスク 4: さまざまなイベントタイプのサブスクライブ

ステップ

  1. eventing 名前空間で、Configuration→Subscriptions に移動し、Create を選択します。

  2. 以下のパラメータを使用してサブスクリプションを設定します。

    • 名称: lastorder-sub
    • タイプ: order.received.v1 および order.changed.v1
    • サービス: lastorder
  3. YAML タブに切り替えます。

  4. spec セクションで、source: myapp を追加します。

    Code Snippet
    1234
    ... spec: source: myapp ...
  5. 登録を選択します。

結果

成功した場合、数秒後、サブスクリプションのステータスは Ready になります。

タスク 5: イベントによるワークロードのトリガ

ステップ

    注記

    イベントペイロードを指定するために、CloudEvents 仕様に基づいてイベントを送信できます。さまざまな SDK も使用できるため、さまざまなプログラミング言語で記述されたカスタムアプリケーションで SDK を公開/発行し、サブスクライブ/使用することができます。

  1. ターミナルウィンドウを開き、以下を実行します。

    Code Snippet
    1
    kubectl -n kyma-system port-forward service/eventing-publisher-proxy 3000:80
  2. イベント order.received.v1 を公開して関数をトリガするには、別のターミナルウィンドウを開き、以下を実行します。

    Code Snippet
    123456789
    curl -v -X POST \ -H "ce-specversion: 1.0" \ -H "ce-type: order.received.v1" \ -H "ce-source: myapp" \ -H "ce-eventtypeversion: v1" \ -H "ce-id: cc99dcdd-6f6d-43d6-afef-d024eb276584" \ -H "content-type: application/json" \ -d "{\"orderCode\":\"3211213\", \"orderStatus\":\"received\"}" \ http://localhost:3000/publish
  3. イベント order.changed.v1 を公開して関数をトリガするには、同じターミナルウィンドウで以下を実行します。

    Code Snippet
    123456789
    curl -v -X POST \ -H "ce-specversion: 1.0" \ -H "ce-type: order.changed.v1" \ -H "ce-source: myapp" \ -H "ce-eventtypeversion: v1" \ -H "ce-id: 94064655-7e9e-4795-97a3-81bfd497aac6" \ -H "content-type: application/json" \ -d "{\"orderCode\":\"3211213\", \"orderStatus\":\"changed\"}" \ http://localhost:3000/publish
  4. eventing 名前空間で、Workload→s Functions に移動し、Function lastorder を選択します。

  5. 関数のセクション Replicas を見つけて、レプリカの名前を選択します。

  6. コンテナで、ログ表示を選択します。

結果

イベントが正常に配信された場合は、以下の例のようにログに表示されます。

Code Snippet
12345
> nodejs20-runtime@0.1.0 start > node server.js user code loaded in 0sec 0.654321ms Received event: { orderCode: '3211213', orderStatus: 'received' } Received event: { orderCode: '3211213', orderStatus: 'changed' }

おめでとうございます!SAP BTP, Kyma ランタイムのイベンティングモジュールに関するこの演習問題を完了しておきます。2 つのイベントタイプをサブスクライブし、イベントによるワークロードをトリガする Subscription を作成しました。