إضافة Google Cloud Pub/Sub

يتم الآن عرض مستندات Apigee Edge.
انتقِل إلى مستندات Apigee X.
المعلومات

الإصدار: 1.5.1

يمكنك نشر رسائل إلى موضوع في خدمة 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.

المهام

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>

مَعلمات الطلب

المَعلمة الوصف Type تلقائي مطلوبة
رسالة الرسالة المطلوب نشرها. يمكنك استخدام سلسلة بسيطة أو تنظيم رسالتك باستخدام تنسيق JSON بتصميمك الخاص. سلسلة أو JSON لا ينطبق نعم
customAttributes

السمات المخصصة المطلوب إضافتها إلى الرسالة في النموذج:

"customAttributes": {"attr1": "foo", "attr2": "bar"}.
مصفوفة JSON لا ينطبق لا

الإجابة

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

{"messageId":"165918654986954"}

مرجع التكوين

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

خصائص الإضافات الشائعة

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

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

الخصائص لحزمة الإضافات هذه

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