Google Cloud Pub/Sub Extension

شما در حال مشاهده مستندات Apigee Edge هستید.
به مستندات Apigee X مراجعه کنید .
اطلاعات

نسخه: ۲.۰.۲

پیام‌ها را برای یک موضوع در سرویس Google Cloud Pub/Sub منتشر کنید.

این محتوا مرجعی برای پیکربندی و استفاده از این افزونه ارائه می‌دهد.

پیش‌نیازها

قبل از استفاده از افزونه از یک پروکسی API با استفاده از سیاست ExtensionCallout ، باید:

  1. همانطور که در بخش «شروع سریع: استفاده از کنسول» توضیح داده شده است، یک موضوع Cloud Pub/Sub ایجاد کنید.

  2. وقتی موضوع را مشخص کردید، اجازه انتشار در موضوع Cloud Pub/Sub خود را بدهید . برای مثال، می‌توانید از نقش roles/pubsub.publisher برای انتشار در موضوعات استفاده کنید. برای اطلاعات بیشتر در مورد نقش‌های Cloud Pub/Sub، به کنترل دسترسی مراجعه کنید.

  3. از کنسول گوگل کلود برای ایجاد کلید برای حساب سرویس استفاده کنید .

  4. هنگام افزودن و پیکربندی افزونه با استفاده از مرجع پیکربندی ، از محتویات فایل 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 است که از فایل کلید حساب سرویس تولید می‌شود. هیچ کدام. بله.