إضافة Google Cloud Pub/Sub

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

الإصدار: 1.3.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 رسالة كسلسلة بسيطة في موضوع محدّد في إعدادات الإضافة configuration. يعرض الإجراء 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>

تستخدم سياسة Assign Message التالية قيمة المتغيّر الذي يخزّن استجابة الإضافة لإسناد حمولة الاستجابة. يتم تخزين معرّف الرسالة في السمة 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 في موضوع محدّد في إعدادات الإضافة configuration. يعرض الإجراء 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>

تستخدم سياسة Assign Message التالية قيمة المتغيّر الذي يخزّن استجابة الإضافة لإسناد حمولة الاستجابة. يتم تخزين معرّف الرسالة في السمة 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، مثلاً من وحدة تحكّم Google Cloud Platform للخدمة. على سبيل المثال، قد يكون اسم الموضوع بالصيغة projects/GCP-PROJECT-ID/topics/TOPIC-NAME بدون نعم
credentials عند إدخال هذه البيانات في وحدة تحكّم Apigee Edge، يكون هذا هو محتوى ملف مفتاح حساب الخدمة . عند إرسالها من خلال Management API، تكون قيمة بترميز base64 تم إنشاؤها من ملف مفتاح حساب الخدمة. بدون نعم