شما در حال مشاهده مستندات Apigee Edge هستید.
به مستندات Apigee X مراجعه کنید . اطلاعات
نسخه: ۲.۰.۲
پیامها را برای یک موضوع در سرویس Google Cloud Pub/Sub منتشر کنید.
این محتوا مرجعی برای پیکربندی و استفاده از این افزونه ارائه میدهد.
پیشنیازها
قبل از استفاده از افزونه از یک پروکسی API با استفاده از سیاست ExtensionCallout ، باید:
همانطور که در بخش «شروع سریع: استفاده از کنسول» توضیح داده شده است، یک موضوع Cloud Pub/Sub ایجاد کنید.
وقتی موضوع را مشخص کردید، اجازه انتشار در موضوع Cloud Pub/Sub خود را بدهید . برای مثال، میتوانید از نقش
roles/pubsub.publisherبرای انتشار در موضوعات استفاده کنید. برای اطلاعات بیشتر در مورد نقشهای Cloud Pub/Sub، به کنترل دسترسی مراجعه کنید.از کنسول گوگل کلود برای ایجاد کلید برای حساب سرویس استفاده کنید .
هنگام افزودن و پیکربندی افزونه با استفاده از مرجع پیکربندی ، از محتویات فایل JSON کلید حاصل استفاده کنید.
درباره Cloud Pub/Sub
Cloud Pub/Sub پیامرسانی چند به چند و غیرهمزمان را فراهم میکند که فرستندهها و گیرندهها را از هم جدا میکند. Cloud Pub/Sub پیامرسانی با تأخیر کم و پایدار را ارائه میدهد که به توسعهدهندگان کمک میکند تا به سرعت سیستمهای میزبانی شده در Google Cloud و سیستمهای خارجی را ادغام کنند.
اگر تازه کار با Cloud Pub/Sub را شروع کردهاید، نگاهی به راهنمای سریع موجود در مستندات Cloud Pub/Sub بیندازید.
نمونهها
مثالهای زیر نحوه پیکربندی پشتیبانی از اقدامات افزونه Cloud Pub/Sub را با استفاده از خطمشی ExtensionCallout نشان میدهند.
پیام متنی
در این مثال، تابع publish ، پیامی را به صورت رشتهای در موضوعی که در پیکربندی افزونه مشخص شده است، منتشر میکند. تابع publish شناسه پیام منتشر شده در موضوعی که در آن منتشر شده است را برمیگرداند و آن را در متغیری که توسط برچسب <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>
سیاست تخصیص پیام زیر از مقدار متغیری که پاسخ افزونه را ذخیره میکند، برای تخصیص بار داده پاسخ استفاده میکند. شناسه پیام در ویژگی 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 برابر با ۱۶۵۹۱۸۶۵۴۹۸۶۹۵۴ است.
پیام JSON
در این مثال، تابع publish ، پیامی را به صورت JSON در موضوعی که در پیکربندی افزونه مشخص شده است، منتشر میکند. تابع publish شناسه پیام منتشر شده در موضوعی که در آن منتشر شده است را برمیگرداند و آن را در متغیری که توسط برچسب <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>
سیاست تخصیص پیام زیر از مقدار متغیری که پاسخ افزونه را ذخیره میکند، برای تخصیص بار داده پاسخ استفاده میکند. شناسه پیام در ویژگی 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 برابر با ۱۶۵۹۱۸۶۵۴۹۸۶۹۵۴ است.
اقدامات
منتشر کردن
پیامی را به موضوع مشخص شده در پیکربندی این افزونه منتشر میکند.
نحو
<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": {"attr1": "foo", "attr2": "bar"} . | آرایه JSON | هیچکدام | خیر |
پاسخ
JSON حاوی شناسه پیام منتشر شده در تاپیک. برای مثال:
{"messageId":"165918654986954"}
مرجع پیکربندی
هنگام پیکربندی و استقرار این افزونه برای استفاده در پروکسیهای API، از موارد زیر استفاده کنید.
ویژگیهای افزونههای رایج
ویژگی های زیر برای هر افزونه وجود دارد.
| ویژگی | شرح | پیش فرض | ضروری |
|---|---|---|---|
name | نامی که به این پیکربندی افزونه میدهید. | هیچ یک | آره |
packageName | نام بسته افزودنی همانطور که توسط Apigee Edge داده شده است. | هیچ یک | آره |
version | شماره نسخه بسته برنامه افزودنی که از آن یک برنامه افزودنی را پیکربندی می کنید. | هیچ یک | آره |
configuration | مقدار پیکربندی مخصوص افزونه ای که اضافه می کنید. به ویژگی های این بسته برنامه افزودنی مراجعه کنید | هیچ یک | آره |
ویژگیهای این بسته الحاقی
| ملک | توضیحات | پیشفرض | مورد نیاز |
|---|---|---|---|
topic | موضوعی که قرار است در آن منتشر شود. این مقدار را از سرویس Pub/Sub، مثلاً از کنسول Google Cloud برای آن سرویس، دریافت کنید. برای مثال، نام موضوع ممکن است به شکل projects/GCP-PROJECT-ID/topics/TOPIC-NAME باشد. | هیچ کدام. | بله. |
credentials | وقتی در کنسول Apigee Edge وارد میشود، این محتوای فایل کلید حساب سرویس شماست. وقتی با استفاده از API مدیریت ارسال میشود، یک مقدار کدگذاری شده با پایه 64 است که از فایل کلید حساب سرویس تولید میشود. | هیچ کدام. | بله. |