Google Cloud Pub/Sub 拡張機能

バージョン: 1.3.0

Google Cloud Pub/Sub サービスのトピックにメッセージを公開します。

ここでは、この拡張機能を構成して使用する方法についてのリファレンスを提供します。

前提条件

ExtensionCallout ポリシーで API プロキシ経由で拡張機能を使用する前に、次のことを行う必要があります。

  1. クイックスタート: コンソールの使用の説明に従って、Cloud Pub/Sub トピックを作成します。

  2. トピックを取得したら、Cloud Pub/Sub トピックに公開する権限を付与します。たとえば、roles/pubsub.publisher ロールを使用してトピックに公開できます。Cloud Pub/Sub ロールの詳細については、アクセス制御をご覧ください。

  3. GCP Console でサービス アカウント キーを作成します

  4. 拡張機能の追加と構成を行うときに、構成リファレンスを使用して、生成されたキーの JSON ファイルのコンテンツを使用します。

Cloud Pub/Sub について

Cloud Pub/Sub は、送信者と受信者を分離する多対多の非同期メッセージングを提供します。Cloud Pub/Sub は、Google Cloud Platform や外部にホストされているシステムをデベロッパーがすばやく統合するのに役立つ、低レイテンシで耐久性のあるメッセージングを提供します。

Cloud Pub/Sub を使い始めたばかりの場合は、Cloud Pub/Sub ドキュメントのクイックスタートをご覧ください。

次の例では、ExtensionCallout ポリシーを使用して、Cloud Pub/Sub 拡張機能のアクションをサポートする方法を説明します。

テキスト メッセージ

この例では、publish アクションを使用して、拡張機能の構成に指定されたトピックに簡単な文字列としてメッセージを公開しています。publish アクションは、公開先のトピックで公開されたメッセージの ID を返し、<Output> タグで指定された変数に書き込みます。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Publish-Message">
    <DisplayName>Publish Message</DisplayName>
    <Connector>cloud-pub-sub-extension-example</Connector>
    <Action>publish</Action>
    <Input><![CDATA[
      {
          "message" : "My test message."
      }
    ]]></Input>
    <Output>topic.message</Output>
</ConnectorCallout>

次の Assign Message ポリシーは、拡張機能のレスポンスを格納する変数の値を使用して、レスポンス ペイロードを割り当てます。メッセージ ID は出力変数の messageId プロパティに保存されます。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Get-Topic-Message-ID">
    <DisplayName>Get Topic Message ID</DisplayName>
    <AssignTo type="response" createNew="false"/>
    <Set>
        <Payload contentType="application/json">{topic.message.messageId}</Payload>
    </Set>
</AssignMessage>

レスポンス データが JSON として返されます。

{"messageId":"165918654986954"}

したがって、topic.message.messageId の値は 165918654986954 です。

JSON メッセージ

この例では、publish アクションを使用して、拡張機能の構成に指定されたトピックに JSON としてメッセージを公開しています。publish アクションは、公開先のトピックで公開されたメッセージの ID を返し、<Output> タグで指定された変数に書き込みます。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Publish-Message">
    <DisplayName>Publish Message</DisplayName>
    <Connector>cloud-pub-sub-extension-example</Connector>
    <Action>publish</Action>
    <Input><![CDATA[
      {
          "message" : { "info" : "My test message" }
      }
    ]]></Input>
    <Output>topic.message</Output>
</ConnectorCallout>

次の Assign Message ポリシーは、拡張機能のレスポンスを格納する変数の値を使用して、レスポンス ペイロードを割り当てます。メッセージ ID は出力変数の messageId プロパティに保存されます。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Get-Topic-Message-ID">
    <DisplayName>Get Topic Message ID</DisplayName>
    <AssignTo type="response" createNew="false"/>
    <Set>
        <Payload contentType="application/json">{topic.message.messageId}</Payload>
    </Set>
</AssignMessage>

レスポンス データが JSON として返されます。

{"messageId":"165918654986954"}

したがって、topic.message.messageId の値は 165918654986954 です。

アクション

publish

この拡張機能の構成で指定されたトピックにメッセージを公開します。

構文

<Action>publish</Action>
<Input><![CDATA[{
  "message" : "message-to-publish" | JSON-structured-data,
  "customAttributes": JSON-array
}]]></Input>

文字列の例

<Action>publish</Action>
<Input><![CDATA[
  {
      "message" : "My test message."
  }
]]></Input>

JSON 構造化データの例

<Action>publish</Action>
<Input><![CDATA[
  {
      "message" : { "info" : "My test message" }
  }
]]></Input>

カスタム属性の例

<Action>publish</Action>
<Input><![CDATA[
  {
      "message" : { "info" : "My test message" },
      "customAttributes": {"attr1": "foo", "attr2": "bar"}
  }
]]></Input>

リクエスト パラメータ

パラメータ 説明 デフォルト 必須
message 公開するメッセージ。単純な文字列を使用するか、独自の設計の JSON でメッセージを構成できます。 文字列または JSON なし
customAttributes

次の形式でメッセージに追加するカスタム属性。

"customAttributes": {"attr1": "foo", "attr2": "bar"}
JSON 配列 なし ×

レスポンス

トピックに公開されたメッセージの ID を含む JSON。例:

{"messageId":"165918654986954"}

構成リファレンス

この拡張機能を API プロキシで使用するように構成してデプロイする場合は、以下のプロパティを使用します。

拡張機能の共通プロパティ

すべての拡張機能には次のプロパティがあります。

プロパティ 説明 デフォルト 必須
name この拡張機能に付ける名前。 なし
packageName Apigee Edge から提供された拡張機能パッケージの名前。 なし
version 拡張機能を構成する拡張機能パッケージのバージョン番号。 なし
configuration 追加する拡張機能に固有の構成値。この拡張機能パッケージのプロパティをご覧ください。 なし

この拡張機能パッケージに固有のプロパティ

プロパティ 説明 デフォルト 必須
topic 公開先のトピック。この値は、Pub/Sub サービス(サービスの GCP Console など)から取得します。たとえば、トピック名は projects/GCP-PROJECT-ID/topics/TOPIC-NAME の形式になります。 なし