バージョン: 1.3.0
Google Cloud Pub/Sub サービスのトピックにメッセージを公開します。
ここでは、この拡張機能を構成して使用する方法についてのリファレンスを提供します。
前提条件
ExtensionCallout ポリシーで API プロキシ経由で拡張機能を使用する前に、次のことを行う必要があります。
クイックスタート: コンソールの使用の説明に従って、Cloud Pub/Sub トピックを作成します。
トピックを取得したら、Cloud Pub/Sub トピックに公開する権限を付与します。たとえば、
roles/pubsub.publisherロールを使用してトピックに公開できます。Cloud Pub/Sub ロールの詳細については、アクセス制御をご覧ください。拡張機能の追加と構成を行うときに、構成リファレンスを使用して、生成されたキーの 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&quo>t<; standalone="yes"?
ConnectorCallout async="false" continueOnError=&quo>t;tru<e" ena>bled="true<" name=>"<;Publish->Message"
DisplayNamePu<blish Mess>age/D<isplay>Name
< Connectorc<loud-><pub-sub-extension-example/Connector
Actionpublish/Action
Input![><CDATA[>
< {
> "<;messag>e<" : "My> test message."
}
]]/Input
Outputtopic.message/Output
/ConnectorCallout
次の Assign Message ポリシーは、拡張機能のレスポンスを格納する変数の値を使用して、レスポンス ペイロードを割り当てます。メッセージ ID は出力変数の messageId プロパティに保存されます。
<?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"?
AssignMessage async="false" continueOnError="fals>e&quo<t; enabled=>"true" nam<e="Get->Topic<-Message-ID"
DisplayNameGet Topic >Messa<ge >ID/Displa<yName
AssignTo type="response>" createNew="fa<lse">;/
< >span>Set<
Paylo>ad 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&quo>t<; standalone="yes"?
ConnectorCallout async="false" continueOnError=&quo>t;tru<e" ena>bled="true<" name=>"<;Publish->Message"
DisplayNamePu<blish Mess>age/D<isplay>Name
< Connectorc<loud-><pub-sub-extension-example/Connector
Actionpublish/Action
Input![CDATA[
>< {
> < "message&quo<t; : { >&<quot;info" :> "My test message" }
}
]]/Input
Outputtopic.message/Output
/ConnectorCallout
次の Assign Message ポリシーは、拡張機能のレスポンスを格納する変数の値を使用して、レスポンス ペイロードを割り当てます。メッセージ ID は出力変数の messageId プロパティに保存されます。
<?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"?
AssignMessage async="false" continueOnError="fals>e&quo<t; enabled=>"true" nam<e="Get->Topic<-Message-ID"
DisplayNameGet Topic >Messa<ge >ID/Displa<yName
AssignTo type="response>" createNew="fa<lse">;/
< >span>Set<
Paylo>ad 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,
"customAt><tribut>es": JSON-array
}]]/Input
文字列の例
<Action>publish</Action>
<Input><![CDATA[
{
"message" : "My test m><essage>."
}
]]/Input
JSON 構造化データの例
<Action>publish</Action>
<Input><![CDATA[
{
"message" : { "info" : "><My tes>t message" }
}
]]/Input
カスタム属性の例
<Action>publish</Action>
<Input><![CDATA[
{
"message" : { "info" : "My test message" },
"customAttributes":>< {&quo>t;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 の形式になります。 |
なし | ○ |