<ph type="x-smartling-placeholder"></ph>
現在、Apigee Edge のドキュメントが表示されています。
Apigee X のドキュメント。 詳細
<ph type="x-smartling-placeholder">
バージョン: 1.5.1
Google Cloud Pub/Sub サービスでトピックにメッセージをパブリッシュします。
ここでは、この拡張機能を構成して使用するためのリファレンスを提供します。
前提条件
ExtensionCallout ポリシーを使用して API プロキシから拡張機能を使用する前に、次のことを行う必要があります。
クイックスタート: コンソールの使用の説明に従って、Cloud Pub/Sub トピックを作成します。
トピックを取得したら、Cloud Pub/Sub トピックにパブリッシュする権限を付与します。たとえば、
roles/pubsub.publisher
ロールを使用してトピックに公開できます。Cloud Pub/Sub ロールの詳細については、アクセス制御をご覧ください。
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 になります。
操作
<ph type="x-smartling-placeholder">
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>
リクエスト パラメータ
パラメータ | 説明 | 型 | デフォルト | 必須 |
---|---|---|---|---|
メッセージ | パブリッシュするメッセージ。単純な文字列を使用することも、独自の設計の JSON を使用してメッセージを構造化することもできます。 | 文字列または JSON | なし | ○ |
customAttributes | 次の形式でメッセージに追加するカスタム属性: "customAttributes": {"attr1": "foo", "attr2": "bar"} 。 |
JSON 配列 | なし | いいえ |
レスポンス
トピックに公開されたメッセージの ID を含む JSON。例:
{"messageId":"165918654986954"}
構成リファレンス
API プロキシで使用するためにこの拡張機能を構成してデプロイする場合は、以下を使用します。
拡張機能の一般的なプロパティ
すべての拡張機能には次のプロパティがあります。
プロパティ | 説明 | デフォルト | 必須 |
---|---|---|---|
name |
この拡張機能に付ける名前。 | なし | ○ |
packageName |
Apigee Edge から提供された拡張機能パッケージの名前。 | なし | ○ |
version |
拡張機能を構成する拡張機能パッケージのバージョン番号。 | なし | ○ |
configuration |
追加する拡張機能に固有の構成値。この拡張機能パッケージのプロパティをご覧ください。 | なし | ○ |
この拡張機能パッケージのプロパティ
プロパティ | 説明 | デフォルト | 必須 |
---|---|---|---|
topic |
パブリッシュ先のトピック。この値は、Pub/Sub サービス(サービスの GCP コンソールなど)から取得します。たとえば、トピック名は projects/GCP-PROJECT-ID/topics/TOPIC-NAME の形式になります。 |
なし。 | はい。 |
credentials |
Apigee Edge コンソールに入力する場合は、サービス アカウント キーファイルの内容です。Management API 経由で送信する場合は、サービス アカウント キー ファイルから生成された base64 エンコード値になります。 | なし。 | はい。 |