すべてのプロダクト
Search
ドキュメントセンター

Alibaba Cloud Model Studio:HTTP コールバックまたは MQ 経由でのタスク完了通知の受信

最終更新日:May 28, 2026

タスクの結果をポーリングする代わりに、HTTP コールバック URL または RocketMQ を設定することで、EventBridge からタスク完了通知を受信できます。通知を受信したら、結果 API に 1 回クエリして出力を取得します。

背景

Alibaba Cloud Model Studio は EventBridge と統合して、設定されたイベントターゲットにタスク完了イベントを配信します。

非同期タスクが完了すると (成功または失敗)、タスクのステータスと ID を含むタスク完了イベント が EventBridge に報告され、EventBridge がこれをターゲットに転送します。その他のイベントターゲットについては、イベントターゲット および ターゲットサービスタイプをご参照ください。

ポーリングとイベント駆動型通知の比較

比較項目

ポーリング

イベント駆動型

レート制限

結果 API にはレート制限があります (20 QPS)

レート制限なし

統合の複雑さ

シンプル:結果 API をポーリングします。一部のタスク (テキストツーイメージテキストツービデオ など) では、ポーリング機能を組み込んだ SDK が提供されています。

EventBridge で HTTP コールバックまたは RocketMQ を設定し、通知を解析します。

サーバーリソースの消費

頻繁なクエリによりサーバーリソースを消費します。

リソースの消費なし:EventBridge がプッシュします。

レイテンシー

ポーリング間隔に依存します。

ほぼリアルタイム:完了時に即座にプッシュされます。

推奨

並行性が低い、またはレイテンシーを許容できるシナリオ。

並行性が高い、またはレイテンシーの影響を受けやすいシナリオ。

EventBridge で、次のいずれかのイベントターゲットを設定してください。

  • HTTP コールバック URL:POST リクエストを受け入れる、パブリックにアクセス可能なエンドポイントまたは VPC エンドポイントです。ほとんどのシナリオに適しています。

  • RocketMQMessage Queue for RocketMQ を介してイベントを消費します。高い信頼性が求められるシナリオに最適です。

オプション 1: HTTP コールバック URL の設定

概要

Alibaba Cloud Model Studio がタスクを完了すると、タスク完了イベントが EventBridge に報告されます。EventBridge は、このイベントを設定されたコールバックエンドポイントにプッシュします。コールバックエンドポイントは、イベントを解析して正常に処理されたタスク ID を抽出し、結果クエリ API を一度呼び出してタスクの出力を取得します。

メリット:直接ポーリングする方法と比較して、このアプローチでは不要なポーリングリクエストを回避し、リソースの消費を削減し、結果クエリ API のレート制限に対する負荷を軽減します。

課金EventBridge の課金

たとえば、テキストツーイメージの HTTP コールバック URL を使用した非同期呼び出しフローは次のとおりです。

  • テキストツーイメージタスクを作成し、タスク ID (task_id) を受け取ります。タスクはまだ完了していません。

  • Alibaba Cloud Model Studio が処理を完了すると、タスク完了イベントが EventBridge に報告されます。

  • EventBridge は、イベントを HTTP コールバックエンドポイントにプッシュします。

  • コールバックエンドポイントはイベントを解析し、完了した task_id を取得します。

  • 最後に、結果クエリ API を呼び出して、生成された画像 URL を取得します。

image

操作手順

ステップ 1: HTTP コールバックエンドポイントの準備

通常、業務システムに HTTP コールバックエンドポイントをデプロイして、非同期イベント通知を受信します。次の要件を満たす必要があります。

  • リクエスト URL: パブリックネットワーク経由、または Alibaba Cloud VPC 内でアクセス可能な HTTP URL。

  • リクエストメソッド: POST

  • リクエストボディ: 非同期タスク完了イベントデータを含む JSON 形式。正確なイベント構造は、EventBridge コンソールで確認できます。例:

[クリックして非同期タスク完了イベントのデータ構造を表示]

{
    "datacontenttype": "application/json;charset=utf-8",
    "aliyunaccountid": "xxxxx",
    "aliyunpublishtime": "2023-10-25T01:45:16.993Z",
    "data": {
        "start_time": "2023-10-25 09:45:09",
        "user_api_unique_key": "apikey:v1:audio:asr:transcription:paraformer-8k-v1",
        "task_status": "SUCCEEDED",
        "contain_result": false,
        "end_time": "2023-10-25 09:45:16",
        "task_id": "a154c328-xxxx-xxxx-xxxx-e52a9a7e9a35",
        "region": "ap-southeast-1",
        "request_id": "108f38f5-xxxx-xxxx-xxxx-6504db9080b3",
        "api_key_id": "1250"
    },
    "aliyunoriginalaccountid": "xxxxxxxx",
    "specversion": "1.0",
    "aliyuneventbusname": "default",
    "id": "81765e5b-xxxx-xxxx-xxxx-bbad8dde2bd9",
    "source": "acs.dashscope",
    "time": "2023-10-25T01:45:16.969Z",
    "aliyunregionid": "ap-southeast-1",
    "type": "dashscope:System:AsyncTaskFinish"
}

ステップ 2: EventBridge コンソールでのイベントのクエリ

EventBridge コンソールでは、Alibaba Cloud Model Studio によって配信されたイベントをクエリできます。

  1. Alibaba Cloud アカウントにログインし、EventBridge コンソールに移動します。[シンガポールリージョン]に切り替えます。左側のナビゲーションペインで [イベントバス] を選択し、[default] をクリックしてクラウドサービスのデフォルトイベントバスに移動します。

    Alibaba Cloud Model Studio は、デフォルトでデフォルトイベントバスを使用します。
  2. [イベント追跡] をクリックし、検索条件を入力して、Alibaba Cloud Model Studio からの非同期タスク完了イベントを検索します。

    • イベントソース: acs.dashscope を検索して選択します。これは、イベントが DashScope (Alibaba Cloud Model Studio の基盤となるモデルサービス) から発信されたことを示します。

    • イベントタイプ:非同期タスク完了イベントを示す dashscope:System:AsyncTaskFinish を検索して選択します。

  3. [詳細] をクリックして、報告されたイベントの詳細を表示します。

    {
        "datacontenttype": "application/json;charset=utf-8",
        "aliyunaccountid": "xxxxx",
        "aliyunpublishtime": "2023-10-25T01:45:16.993Z",
        "data": {
            "start_time": "2023-10-25 09:45:09",
            "user_api_unique_key": "apikey:v1:audio:asr:transcription:paraformer-8k-v1",
            "task_status": "SUCCEEDED",
            "contain_result": false,
            "end_time": "2023-10-25 09:45:16",
            "task_id": "a154c328-xxxx-xxxx-xxxx-e52a9a7e9a35",
            "region": "ap-southeast-1",
            "request_id": "108f38f5-xxxx-xxxx-xxxx-6504db9080b3",
            "api_key_id": "1250"
        },
        "aliyunoriginalaccountid": "xxxxxxxx",
        "specversion": "1.0",
        "aliyuneventbusname": "default",
        "id": "81765e5b-xxxx-xxxx-xxxx-bbad8dde2bd9",
        "source": "acs.dashscope",
        "time": "2023-10-25T01:45:16.969Z",
        "aliyunregionid": "ap-southeast-1",
        "type": "dashscope:System:AsyncTaskFinish"
    }

[クリックしてパラメーターの説明を表示]

パラメーター

タイプ

説明

値の例

datacontenttype

String

data フィールドのデータ形式です。application/json のみがサポートされています。

application/json;charset=utf-8

aliyunaccountid

String

Alibaba Cloud アカウント ID。

123456789098****

aliyunpublishtime

String

イベントが受信された時刻。

2023-10-25T01:45:16.993Z

data

Object

イベントの内容。構造は発信元サービスによって定義される JSON オブジェクトです。CloudEvents には、イベントプロデューサーが発生時に提供するコンテキスト情報が data 内にカプセル化されている場合があります。

data[].start_time

String

非同期タスクの開始時刻。

形式: yyyy-MM-dd HH:mm:ss

2023-10-25 09:45:09

data[].end_time

String

非同期タスクの完了時刻。

形式: yyyy-MM-dd HH:mm:ss

2023-10-25 09:45:16

data[].user_api_unique_key

String

一意の API キー (タスク送信時に使用されたモデル API の 6 つの要素)。形式:

apikey:version:group:task:function-call:model

  • version:バージョン

  • group:グループ

  • task:タスク名

  • function-call:メソッド名

  • model:モデル名

apikey:v1:audio:asr:transcription:paraformer-8k-v1

data[].task_status

String

タスクステータス

  • PENDING:待機中

  • RUNNING:実行中

  • SUCCEEDED:成功

  • FAILED:失敗

  • CANCELED:キャンセル済み

  • UNKNOWN:タスクが存在しないか、ステータスが不明

SUCCEEDED

data[].task_id

String

タスク ID

a154c328-xxxx-xxxx-xxxx-e52a9a7e9a35

data[].region

String

タスクが実行されるリージョン

ap-southeast-1

data[].request_id

String

リクエスト ID

108f38f5-xxxx-xxxx-xxxx-6504db9080b3

data[].api_key_id

String

API キー ID

1250

aliyunoriginalaccountid

String

元の Alibaba Cloud アカウント ID

123456789098****

specversion

String

CloudEvents プロトコルバージョン

1.0

aliyuneventbusname

String

イベントを受信するイベントバスの名前

default

id

String

イベント ID—イベントを識別する一意の値。

81765e5b-xxxx-xxxx-xxxx-bbad8dde2bd9

source

String

イベントソース。

イベントを提供するサービスは、発生した事象を識別するもので、通常はイベントソースのタイプ、発行メカニズム、または生成プロセスが含まれます。送信者は、各イベントの source+id の組み合わせが一意になるようにする必要があります。

acs.dashscope

time

String

イベントが生成された時刻。

正確なイベント時刻が不明な場合、CloudEvents プロデューサーは time を別の値 (現在時刻など) に設定できますが、同じソースのすべてのプロデューサーは一貫した値を使用する必要があります。

2023-10-25T01:45:16.969Z

aliyunregionid

String

イベントを受信するリージョン。

ap-southeast-1

type

String

イベントタイプ。

ソースに関連するイベントのタイプを説明します。ルーティング、イベントクエリ、およびポリシーの適用に使用されます。形式はプロデューサーによって定義され、バージョン情報が含まれます。

dashscope:System:AsyncTaskFinish

ステップ 3: イベント転送ルールの設定

  1. 左側のナビゲーションペインで、[イベントルール] を選択し、[ルールを作成] をクリックします。

  2. [基本情報の構成]:カスタムルール名と説明を入力します。

  3. [イベントパターンの設定]: 転送するイベントを指定します。

    • [イベントソース]: acs.dashscope を検索して選択します。これは、イベントの発生元が Alibaba Cloud Model Studio であることを示します。

    • [イベントタイプ]: 非同期タスクの完了イベントを示す dashscope:System:AsyncTaskFinish を検索して選択します。

    • [パターン内容]: 特定のイベントに一致するようにフィルター条件を設定します。ステップ 2 でクエリされたイベント詳細のフィールドを使用します。パターン構文については、「イベントパターン」をご参照ください。例:

      • デフォルト: イベントソースとタイプを選択すると、パターンはデフォルトで以下となり、すべての dashscope:System:AsyncTaskFinish イベントを転送します。

      {
        "source": ["acs.dashscope"],
        "type": ["dashscope:System:AsyncTaskFinish"]
      }
      • フィールドでフィルター: user_api_unique_key フィールドの末尾が :paraformer-8k-v1 であるイベント、つまり paraformer-8k-v1 モデルのイベントのみを転送します。イベントタイプは dashscope:System:AsyncTaskFinish です。

      {
        "source": ["acs.dashscope"],
        "type": ["dashscope:System:AsyncTaskFinish"],
        "data": {
          "user_api_unique_key": [
            {"suffix": ":paraformer-8k-v1"}
          ]
        }
      }
  4. [イベントターゲットの設定]:HTTP コールバック URL や RocketMQ メッセージキューなど、複数の イベントターゲットタイプをサポートします。詳細については、ステップ 4 をご参照ください。

ステップ 4: イベントターゲットを HTTP コールバックエンドポイントに設定

  1. [イベントターゲットの設定]: イベントを HTTP コールバック URL に転送します。

    • サービスタイプ:「HTTP」を選択します。

    • URL: HTTP サービスエンドポイントを入力します。

    • ボディ:「完全なイベント」を選択します。

    • ネットワークタイプ:サービスエンドポイントに応じて選択します。

      • HTTP は、パブリックネットワークとプライベートネットワークの両方をサポートしています。プライベートネットワークを選択した場合は、VPC、vSwitch、およびセキュリティグループを設定します。

  2. OK をクリックしてルールを保存します。イベントターゲットが HTTP 形式で表示された場合、設定は成功です。

    ルールの [イベントターゲット] 列に [HTTP (1)] と表示されます。

オプション 2:RocketMQ の設定

概要

Alibaba Cloud Model Studio がタスクを完了すると、タスク完了イベントを EventBridge に報告します。EventBridge はそのイベントを Message Queue for RocketMQ に転送します。アプリケーションはメッセージキューをリッスンし、メッセージを消費して完了したタスク ID を抽出し、結果クエリ API を一度呼び出してタスクの出力を取得します。

利点:HTTP コールバック方式とは異なり、RocketMQ はメッセージ配信を保証し、失敗時のリトライをサポートしているため、高いメッセージの信頼性が求められるシナリオに最適です。

課金EventBridge の課金RocketMQ の課金

例えば、Text-to-Image で RocketMQ を使用した非同期呼び出しのフローは次のとおりです:

  • Text-to-Image タスクを作成し、task_id を受け取ります。この時点ではタスクはまだ完了していません。

  • Alibaba Cloud Model Studio が処理を完了すると、タスク完了イベントを EventBridge に報告します。

  • EventBridge はイベントを指定された RocketMQ キューに積極的に転送します。

  • アプリケーションは RocketMQ キューをリッスンし、メッセージを消費して、完了した task_id を抽出します。

  • 最後に、結果クエリ API を呼び出して、生成された画像 URL を取得します。

image

操作手順

ステップ 1:RocketMQ インスタンスの準備 (既存の RocketMQ キューがある場合はスキップ)

RocketMQ 経由でイベントを受信するには、まず RocketMQ キューを準備します。

  1. RocketMQ コンソールに移動します。 左側のナビゲーションペインで、[インスタンス] を選択し、[インスタンスの作成] をクリックします。

    インスタンス ID の例: rmq-cn-nwy*******

  2. インスタンスのトピックを作成し、カスタムのトピック名を入力します。

  3. インスタンスにグループを作成し、カスタムグループ名を入力します。

ステップ 2: EventBridge コンソールでのイベントのクエリ

EventBridge コンソールでは、Alibaba Cloud Model Studio によって配信されたイベントをクエリできます。

  1. Alibaba Cloud アカウントにログインし、EventBridge コンソールに移動します。[シンガポールリージョン]に切り替えます。左側のナビゲーションペインで [イベントバス] を選択し、[default] をクリックしてクラウドサービスのデフォルトイベントバスに移動します。

    Alibaba Cloud Model Studio は、デフォルトでデフォルトイベントバスを使用します。
  2. [イベント追跡] をクリックし、検索条件を入力して、Alibaba Cloud Model Studio からの非同期タスク完了イベントを検索します。

    • イベントソース: acs.dashscope を検索して選択します。これは、イベントが DashScope (Alibaba Cloud Model Studio の基盤となるモデルサービス) から発信されたことを示します。

    • イベントタイプ:非同期タスク完了イベントを示す dashscope:System:AsyncTaskFinish を検索して選択します。

  3. [詳細] をクリックして、報告されたイベントの詳細を表示します。

    {
        "datacontenttype": "application/json;charset=utf-8",
        "aliyunaccountid": "xxxxx",
        "aliyunpublishtime": "2023-10-25T01:45:16.993Z",
        "data": {
            "start_time": "2023-10-25 09:45:09",
            "user_api_unique_key": "apikey:v1:audio:asr:transcription:paraformer-8k-v1",
            "task_status": "SUCCEEDED",
            "contain_result": false,
            "end_time": "2023-10-25 09:45:16",
            "task_id": "a154c328-xxxx-xxxx-xxxx-e52a9a7e9a35",
            "region": "ap-southeast-1",
            "request_id": "108f38f5-xxxx-xxxx-xxxx-6504db9080b3",
            "api_key_id": "1250"
        },
        "aliyunoriginalaccountid": "xxxxxxxx",
        "specversion": "1.0",
        "aliyuneventbusname": "default",
        "id": "81765e5b-xxxx-xxxx-xxxx-bbad8dde2bd9",
        "source": "acs.dashscope",
        "time": "2023-10-25T01:45:16.969Z",
        "aliyunregionid": "ap-southeast-1",
        "type": "dashscope:System:AsyncTaskFinish"
    }

[クリックしてパラメーターの説明を表示]

パラメーター

タイプ

説明

値の例

datacontenttype

String

data フィールドのデータ形式です。application/json のみがサポートされています。

application/json;charset=utf-8

aliyunaccountid

String

Alibaba Cloud アカウント ID。

123456789098****

aliyunpublishtime

String

イベントが受信された時刻。

2023-10-25T01:45:16.993Z

data

Object

イベントの内容。構造は発信元サービスによって定義される JSON オブジェクトです。CloudEvents には、イベントプロデューサーが発生時に提供するコンテキスト情報が data 内にカプセル化されている場合があります。

data[].start_time

String

非同期タスクの開始時刻。

形式: yyyy-MM-dd HH:mm:ss

2023-10-25 09:45:09

data[].end_time

String

非同期タスクの完了時刻。

形式: yyyy-MM-dd HH:mm:ss

2023-10-25 09:45:16

data[].user_api_unique_key

String

一意の API キー (タスク送信時に使用されたモデル API の 6 つの要素)。形式:

apikey:version:group:task:function-call:model

  • version:バージョン

  • group:グループ

  • task:タスク名

  • function-call:メソッド名

  • model:モデル名

apikey:v1:audio:asr:transcription:paraformer-8k-v1

data[].task_status

String

タスクステータス

  • PENDING:待機中

  • RUNNING:実行中

  • SUCCEEDED:成功

  • FAILED:失敗

  • CANCELED:キャンセル済み

  • UNKNOWN:タスクが存在しないか、ステータスが不明

SUCCEEDED

data[].task_id

String

タスク ID

a154c328-xxxx-xxxx-xxxx-e52a9a7e9a35

data[].region

String

タスクが実行されるリージョン

ap-southeast-1

data[].request_id

String

リクエスト ID

108f38f5-xxxx-xxxx-xxxx-6504db9080b3

data[].api_key_id

String

API キー ID

1250

aliyunoriginalaccountid

String

元の Alibaba Cloud アカウント ID

123456789098****

specversion

String

CloudEvents プロトコルバージョン

1.0

aliyuneventbusname

String

イベントを受信するイベントバスの名前

default

id

String

イベント ID—イベントを識別する一意の値。

81765e5b-xxxx-xxxx-xxxx-bbad8dde2bd9

source

String

イベントソース。

イベントを提供するサービスは、発生した事象を識別するもので、通常はイベントソースのタイプ、発行メカニズム、または生成プロセスが含まれます。送信者は、各イベントの source+id の組み合わせが一意になるようにする必要があります。

acs.dashscope

time

String

イベントが生成された時刻。

正確なイベント時刻が不明な場合、CloudEvents プロデューサーは time を別の値 (現在時刻など) に設定できますが、同じソースのすべてのプロデューサーは一貫した値を使用する必要があります。

2023-10-25T01:45:16.969Z

aliyunregionid

String

イベントを受信するリージョン。

ap-southeast-1

type

String

イベントタイプ。

ソースに関連するイベントのタイプを説明します。ルーティング、イベントクエリ、およびポリシーの適用に使用されます。形式はプロデューサーによって定義され、バージョン情報が含まれます。

dashscope:System:AsyncTaskFinish

ステップ 3: イベント転送ルールの設定

  1. 左側のナビゲーションペインで、[イベントルール] を選択し、[ルールを作成] をクリックします。

  2. [基本情報の構成]:カスタムルール名と説明を入力します。

  3. [イベントパターンの設定]: 転送するイベントを指定します。

    • [イベントソース]: acs.dashscope を検索して選択します。これは、イベントの発生元が Alibaba Cloud Model Studio であることを示します。

    • [イベントタイプ]: 非同期タスクの完了イベントを示す dashscope:System:AsyncTaskFinish を検索して選択します。

    • [パターン内容]: 特定のイベントに一致するようにフィルター条件を設定します。ステップ 2 でクエリされたイベント詳細のフィールドを使用します。パターン構文については、「イベントパターン」をご参照ください。例:

      • デフォルト: イベントソースとタイプを選択すると、パターンはデフォルトで以下となり、すべての dashscope:System:AsyncTaskFinish イベントを転送します。

      {
        "source": ["acs.dashscope"],
        "type": ["dashscope:System:AsyncTaskFinish"]
      }
      • フィールドでフィルター: user_api_unique_key フィールドの末尾が :paraformer-8k-v1 であるイベント、つまり paraformer-8k-v1 モデルのイベントのみを転送します。イベントタイプは dashscope:System:AsyncTaskFinish です。

      {
        "source": ["acs.dashscope"],
        "type": ["dashscope:System:AsyncTaskFinish"],
        "data": {
          "user_api_unique_key": [
            {"suffix": ":paraformer-8k-v1"}
          ]
        }
      }
  4. [イベントターゲットの設定]:HTTP コールバック URL や RocketMQ メッセージキューなど、複数の イベントターゲットタイプをサポートします。詳細については、ステップ 4 をご参照ください。

ステップ 4:イベントターゲットを RocketMQ に設定

RocketMQ を作成した後、イベントターゲット設定インターフェースを開き、使用する RocketMQ インスタンスを選択します。

  • サービスタイプ: 「Message Queue for RocketMQ」を選択します。

  • バージョン: 作成した RocketMQ のバージョン (例:RocketMQ 5.x) を選択します。

  • インスタンス ID: RocketMQ インスタンスの ID。ステップ 1 をご参照ください。

  • トピック: 作成したトピック名。ステップ 1 をご参照ください。

ステップ 5:RocketMQ コンソールでのメッセージの表示

設定後、非同期タスクを送信します。完了後、設定した RocketMQ トピックでメッセージを表示できます。

  • RocketMQ でオンラインでメッセージを表示するには、ワンクリック送受信体験機能を有効にする必要があります。

  • この機能は Function Compute を使用します。無料トライアルのクォータを超えた場合、最小限の料金が発生します。Function Compute の課金ルールをご参照ください。

[Topics] ページで、対象のトピックを見つけ、[Actions] 列の [Details] をクリックします。

トピック詳細ページで、[One-click send/receive experience] タブに切り替えます。[Basic Features] セクションで、[PushConsumer] などの消費方法を選択します。

[Topic Name][Group ID] などのパラメーターを設定した後、[Run] をクリックしてメッセージの受信を開始します。[Run Results] タブには、メッセージ ID や受信時刻など、受信したメッセージが表示されます。

ステップ 6:SDK を使用したメッセージの受信と消費

RocketMQ の Java SDK を使用して、関連するトピックをサブスクライブし、メッセージリスナーを実装してメッセージを処理します。

次の例は、RocketMQ 5.0 の Java クライアントのサンプルコードを示します。

  • Maven プロジェクトでは、次の依存関係を追加します:

<dependency>
  <groupId>org.apache.rocketmq</groupId>
  <artifactId>rocketmq-client-java</artifactId>
  <version>5.0.4</version>
</dependency>
  • MQ メッセージを消費するためのサンプルコードは、次のとおりです:

import com.alibaba.fastjson2.JSON;
import org.apache.rocketmq.client.apis.*;
import org.apache.rocketmq.client.apis.consumer.ConsumeResult;
import org.apache.rocketmq.client.apis.consumer.FilterExpression;
import org.apache.rocketmq.client.apis.consumer.FilterExpressionType;
import org.apache.rocketmq.client.apis.consumer.PushConsumer;
import org.apache.rocketmq.shaded.org.slf4j.Logger;
import org.apache.rocketmq.shaded.org.slf4j.LoggerFactory;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.Collections;

public class ConsumerExample {
    private static final Logger LOGGER = LoggerFactory.getLogger(ConsumerExample.class);

    private ConsumerExample() {
    }

    public static void main(String[] args) throws ClientException, IOException, InterruptedException {
        /*
          コンソールのインスタンス詳細ページの [Endpoints] タブから取得したエンドポイント。
          Alibaba Cloud ECS インスタンスから内部ネットワーク経由でアクセスする場合は、VPC エンドポイントを使用します。
          ローカルのパブリックネットワークやオンプレミスの IDC からアクセスする場合は、パブリックエンドポイントを使用します。パブリックエンドポイントでアクセスするには、インスタンスのパブリックネットワークアクセスを有効にする必要があります。
         */
        String endpoints = "xxxx";
        // サブスクライブするターゲットトピックを指定します。トピックは事前にコンソールで作成しておく必要があります。そうしないと、エラーが発生します。
        String topic = "xxxx";
        // コンシューマーグループを指定します。グループは事前にコンソールで作成しておく必要があります。そうしないと、エラーが発生します。
        String consumerGroup = "xxxx";
        final ClientServiceProvider provider = ClientServiceProvider.loadService();
        ClientConfigurationBuilder builder = ClientConfiguration.newBuilder().setEndpoints(endpoints);
        /*
          パブリックエンドポイントを使用する場合は、コンソールのインスタンス詳細ページで確認できるインスタンスのユーザー名とパスワードを設定します。
          Alibaba Cloud ECS インスタンスから内部ネットワーク経由でアクセスする場合は、この設定をスキップします。サーバーが VPC 情報をインテリジェントに取得します。
         */
        builder.setCredentialProvider(new StaticSessionCredentialsProvider("xxxx", "xxxx"));
        ClientConfiguration clientConfiguration = builder.build();
        // サブスクリプションフィルターのルール:任意のタグを持つメッセージをサブスクライブします。
        String tag = "*";
        FilterExpression filterExpression = new FilterExpression(tag, FilterExpressionType.TAG);
        // コンシューマーグループ、通信パラメーター、およびサブスクリプション関係で PushConsumer を初期化します。
        PushConsumer pushConsumer = provider.newPushConsumerBuilder()
        .setClientConfiguration(clientConfiguration)
        // コンシューマーグループを設定します。
        .setConsumerGroup(consumerGroup)
        // 事前にバインドされたサブスクリプション関係を設定します。
        .setSubscriptionExpressions(Collections.singletonMap(topic, filterExpression))
        // メッセージリスナーを設定します。
        .setMessageListener(messageView -> {
            try {
                // メッセージを処理し、消費結果を返します。
                ByteBuffer buffer = messageView.getBody();
                ByteBuffer newBuffer = ByteBuffer.allocate(buffer.capacity());
                for (int i = 0; i < buffer.capacity(); i++) {
                    newBuffer.put(buffer.get(i));
                }
                String result = new String(newBuffer.array());
                LOGGER.info("Consume message={}", JSON.toJSONString(result));
                System.out.println(result);
                return ConsumeResult.SUCCESS;
            } catch (Exception e) {
                LOGGER.error("deal message has error", e);
                return ConsumeResult.FAILURE;
            }
        })
        .build();
        Thread.sleep(Long.MAX_VALUE);

        // 不要になったら PushConsumer を閉じます。
        pushConsumer.close();
    }
}                                                 

よくある質問

1 つのイベントルールに複数のイベントターゲットを設定できますか?

はい。1 つのイベントルールに複数のイベントターゲットを設定できます。設定した場合、同じイベントがすべてのターゲットに配信されます。

イベントルールを設定しましたが、イベントを受信できません。なぜですか?

イベント転送ルールのリージョンが、イベントのリージョンと一致していることを確認してください。たとえば、Singapore リージョンで設定したルールは Singapore のイベントのみを転送し、その他のリージョンのイベントは転送しません。コンソールページ上部のリージョンセレクターで、EventBridge のリージョンを確認してください。

HTTP/HTTPS サービスのリクエストがタイムアウトする、またはエラーが返されるのはなぜですか?

次の手順で切り分けてください:

  1. HTTP/HTTPS サービスのステータスを確認してください。

  2. イベントターゲットに設定した URL を確認してください。

  3. イベントターゲットに設定したネットワークタイプを確認してください:

    • PublicNetwork:パブリックネットワーク。URL がパブリックネットワークからアクセス可能であることを確認してください。

    • PrivateNetwork:VPC ネットワーク。これを選択した場合は、VPC、vSwitch、および SecurityGroup の設定を確認してください。

      • VPC と vSwitch の設定を確認してください。

      • SecurityGroup の設定を確認してください。

  4. その他のパラメータ設定については、「Event target parameters」をご参照ください。