إضافة Google Cloud Pub/Sub

أنت تطّلع على مستندات Apigee Edge.
انتقِل إلى مستندات Apigee X.
info

الإصدار: 2.0.0

نشر الرسائل إلى موضوع في خدمة Google Cloud Pub/Sub

يوفّر هذا المحتوى مرجعًا لضبط هذه الإضافة واستخدامها.

المتطلبات الأساسية

قبل استخدام الإضافة من خادم وكيل لواجهة برمجة التطبيقات باستخدام سياسة ExtensionCallout، عليك إجراء ما يلي:

  1. أنشئ موضوعًا في Cloud Pub/Sub كما هو موضّح في مقالة البدء السريع: استخدام وحدة التحكّم.

  2. بعد الحصول على الموضوع، عليك منح الإذن بالنشر في موضوعك على Cloud Pub/Sub. على سبيل المثال، يمكنك استخدام الدور roles/pubsub.publisher للنشر في المواضيع. لمزيد من المعلومات عن أدوار Cloud Pub/Sub، يُرجى الاطّلاع على مقالة التحكّم في الوصول.

  3. استخدِم وحدة تحكّم Google Cloud Platform لإنشاء مفتاح لحساب الخدمة.

  4. استخدِم محتوى ملف JSON الناتج عن المفتاح عند إضافة الإضافة وضبطها باستخدام مرجع الإعدادات.

لمحة عن Cloud Pub/Sub

توفّر خدمة Cloud Pub/Sub خدمة مراسلة غير متزامنة بين العديد من الأطراف، ما يفصل بين المرسلين والمستلمين. توفّر خدمة Cloud Pub/Sub خدمة مراسلة دائمة وذات وقت استجابة منخفض تساعد المطوّرين على دمج الأنظمة المستضافة على Google Cloud Platform وخارجها بسرعة.

إذا كنت في مرحلة بدء استخدام 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 هي 165918654986954.

رسالة 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 هي 165918654986954.

المهام

نشر

تنشر رسالة في الموضوع المحدّد في إعدادات هذه الإضافة.

البنية

<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 بدون لا

الردّ

ملف JSON يحتوي على معرّف الرسالة كما تم نشره في الموضوع على سبيل المثال:

{"messageId":"165918654986954"}

مرجع الإعدادات

استخدِم ما يلي عند ضبط هذه الإضافة ونشرها لاستخدامها في الخوادم الوكيلة لواجهات برمجة التطبيقات.

سمات الإضافات الشائعة

السمات التالية متاحة لكل إضافة.

الموقع الوصف تلقائي عنصر مطلوب
name الاسم الذي تُعطِه هذه الإضافة من الإضافات. لا ينطبق متوافق
packageName اسم حزمة الإضافة كما هو مُوضَّح من Apigee Edge. لا ينطبق متوافق
version رقم إصدار حزمة الإضافة التي تجري عملية إعداد الإضافة منها. لا ينطبق متوافق
configuration قيمة الإعداد المتعلقة بالإضافة التي تدرجها الاطّلاع على خصائص حزمة الإضافات هذه لا ينطبق متوافق

سمات حزمة الإضافة هذه

الموقع الوصف تلقائي مطلوب
topic الموضوع المطلوب نشر المحتوى فيه يمكنك الحصول على هذه القيمة من خدمة Pub/Sub، مثل وحدة تحكّم GCP للخدمة. على سبيل المثال، قد يكون اسم الموضوع على النحو التالي: projects/GCP-PROJECT-ID/topics/TOPIC-NAME بلا عُري نعم.
credentials عند إدخال هذا المحتوى في وحدة تحكّم Apigee Edge، يكون هذا هو محتوى ملف مفتاح حساب الخدمة. عند إرسالها من خلال Management API، تكون قيمة مُشفَّرة بترميز base64 تم إنشاؤها من ملف مفتاح حساب الخدمة. بلا عُري نعم.