إضافة Google Cloud Pub/Sub

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

الإصدار: 2.0.2

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

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

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

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

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

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

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

  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 هي 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"}

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

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

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

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

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

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

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