1. مقدمة
في هذا الدليل التعليمي حول رموز البرامج، لقد أدرجنا خطوات نشر حدث إلى Google Cloud Pub/Sub API باستخدام حزمة تطوير البرامج (SDK) لـ ABAP في Google Cloud.
يتم استخدام خدمات Google Cloud التالية في هذا الدليل التعليمي:
- نشر/اشتراك
- Cloud Shell
ما ستُنشئه
ستتعرّف على ما يلي:
- فعِّل Pub/Sub في مشروع على Google Cloud.
- أنشئ موضوعًا على Pub/Sub.
- نشر الرسائل
2. قبل البدء
- أن تكون قد ثبَّتَ حزمة تطوير البرامج (SDK) لـ ABAP في Google Cloud على نظامك يمكنك الرجوع إلى تثبيت إصدار ABAP التجريبي على Google Cloud Platform في دروسنا التطبيقية لإعداد نظام جديد.
- يمكنك استخدام Cloud Shell، وهي بيئة سطر أوامر تعمل في Google Cloud. من Cloud Console، انقر على تفعيل Cloud Shell في أعلى يسار الصفحة:
- شغِّل الأوامر التالية لمصادقة حسابك وضبط المشروع التلقائي على
abap-sdk-poc
. تم استخدام المنطقةus-west4-b
كمثال. إذا لزم الأمر، يُرجى تغيير المشروع والمنطقة في الأوامر التالية استنادًا إلى إعداداتك المفضّلة.
gcloud auth login
gcloud config set project abap-sdk-poc
gcloud config set compute/zone us-west4-b
3- نظرة عامة
يتناول نطاق هذا الدليل التعليمي عن البرمجة المكوّنات التالية لخدمة Pub/Sub:
- الناشر (يُعرف أيضًا باسم المنتج): ينشئ الرسائل ويرسلها (ينشرها) إلى خدمة المراسلة حول موضوع محدّد.
- الرسالة: البيانات التي يتم نقلها من خلال خدمة المراسلة
- الموضوع: عنصر مُعنوَن يمثّل خلاصة من الرسائل.
4. إعداد خدمة Pub/Sub
- لإنشاء حساب خدمة بالدور المطلوب، نفِّذ الأمر التالي في وحدة تحكّم Cloud Shell الطرفية:
gcloud iam service-accounts create abap-sdk-pubsub-tester --display-name="Service Account for PubSub"
- لتفعيل Pub/Sub API في حساب الخدمة (
abap-sdk-poc
)، شغِّل الأمر التالي في وحدة تحكّم Cloud Shell:
gcloud services enable pubsub.googleapis.com
- امنح دور إدارة الهوية وإمكانية الوصول pubsub.topics.create لحساب الخدمة حتى تتمكّن من إنشاء موضوع. شغِّل الأمر التالي في وحدة طرفية shell السحابة الإلكترونية:
gcloud endpoints services add-iam-policy-binding pubsub.googleapis.com \ --member='serviceAccount:abap-sdk-pubusb-tester@abap-sdk-poc.iam.gserviceaccount.com' \
--role='roles/roles/pubsub.topics.create'
- امنح دور إدارة الهوية وإمكانية الوصول pubsub.topics.publish لحساب الخدمة حتى تتمكّن من نشر رسالة في الموضوع. شغِّل الأمر التالي في وحدة طرفية shell السحابة الإلكترونية:
gcloud endpoints services add-iam-policy-binding pubsub.googleapis.com \ --member='serviceAccount:abap-sdk-pubusb-tester@abap-sdk-poc.iam.gserviceaccount.com' \
--role='roles/roles/pubsub.topics.publish'
- للتأكّد من إضافة الأدوار، انتقِل إلى صفحة IAM. من المفترض أن يكون حساب الخدمة الذي أنشأته مُدرَجًا مع الأدوار التي تم إسنادها إليه.
5- ضبط مفتاح العميل
للحفاظ على الإعدادات في جدول /GOOG/CLIENT_KEY
، اتّبِع الخطوات التالية:
- في واجهة مستخدم SAP، أدخِل رمز المعاملة SPRO.
- انقر على SAP Reference IMG.
- انقر على ABAP SDK for Google Cloud > الإعدادات الأساسية > ضبط مفتاح العميل.
- انقر على إدخالات جديدة.
- أدخِل قيمًا للحقول التالية:
الحقل | الوصف |
اسم مفتاح Google Cloud | PUBSUB_DEMO |
اسم حساب الخدمة في Google Cloud | abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com |
نطاق Google Cloud | https://www.googleapis.com/auth/cloud-platform |
معرّف مشروع Google Cloud | abap-sdk-poc |
فئة التفويض | /GOOG/CL_AUTH_GOOGLE |
اترك الحقول الأخرى فارغة
6- إنشاء موضوع
يمكنك إنشاء موضوع باستخدام الطريقة CREATE_TOPICS في الرمز المرجعي لواجهة برمجة التطبيقات /GOOG/CL_PUBSUB_V1. توقيع الطريقة:
- في واجهة مستخدم SAP، أدخِل رمز المعاملة SE38.
- أنشئ تقريرًا باسم ZPUBSUB_DEMO.
- في النافذة المنبثقة التي تظهر، أدخِل التفاصيل كما هو موضّح أدناه، ثم انقر على حفظ.
- في النافذة المنبثقة التالية، اختَر كائن محلي أو أدخِل اسم حزمة حسب الاقتضاء.
- في "محرر ABAP"، أضِف الرمز التالي:
" Data Declaration
DATA:
lo_client TYPE REF TO /goog/cl_pubsub_v1.
TRY.
" Open HTTP Connection
CREATE OBJECT lo_client EXPORTING iv_key_name = 'PUBSUB_DEMO'.
" Populate relevant parameters
DATA(lv_p_projects_id) = CONV string( lo_client->gv_project_id ).
DATA(lv_p_topics_id) = CONV string( 'PUBSUB_DEMO_TOPIC' ).
" Call API method pubsub.topics.create
lo_client->create_topics(
EXPORTING
iv_p_projects_id = lv_p_projects_id
iv_p_topics_id = lv_p_topics_id
IMPORTING
es_output = DATA(ls_output)
ev_ret_code = DATA(lv_ret_code)
ev_err_text = DATA(lv_err_text)
es_err_resp = DATA(ls_err_resp) ).
IF lo_client->is_success( lv_ret_code ) = abap_true.
DATA(lv_msg) = 'Topic ' && ':' && lv_p_topics_id && ' was created!'.
MESSAGE lv_msg TYPE 'I' .
ELSE.
MESSAGE lv_err_text TYPE 'E'.
ENDIF.
" Close HTTP Connection
lo_client->close( ).
CATCH /goog/cx_sdk INTO DATA(lo_exception).
MESSAGE lo_exception->get_text( ) TYPE 'E'.
RETURN.
ENDTRY.
- احفظ التقرير وفعِّله.
- تنفيذ التقرير (F8).
عند تنفيذ الأمر بنجاح، من المفترض أن يظهر لك ناتج التقرير كما هو موضّح أدناه:
7- نشر الرسالة في الموضوع
بعد أن أصبح الموضوع جاهزًا، يمكننا الآن التركيز على إرسال البيانات بالطريقة المناسبة. في الخطوة التالية، لنتعرّف على كيفية نشر الرسائل حول هذا الموضوع. يتم نشر الرسائل في الموضوع باستخدام الطريقة PUBLISH_TOPICS
من الرمز المرجعي لواجهة برمجة التطبيقات /GOOG/CL_PUBSUB_V1
.
توقيع الطريقة:
- في واجهة مستخدم SAP، أدخِل رمز المعاملة SE38.
- أنشئ تقريرًا باسم ZPUBSUB_DEMO_PUBLISH.
- في النافذة المنبثقة التي تظهر، أدخِل التفاصيل كما هو موضّح أدناه، ثم انقر على حفظ.
- في النافذة المنبثقة التالية، اختَر كائن محلي أو أدخِل اسم حزمة حسب الاقتضاء.
- في "محرر ABAP"، أضِف الرمز التالي:
" Data Declaration
DATA:
lo_client TYPE REF TO /goog/cl_pubsub_v1,
ls_message TYPE /goog/cl_pubsub_v1=>ty_025,
ls_input TYPE /goog/cl_pubsub_v1=>ty_023.
TRY.
" Open HTTP Connection
CREATE OBJECT lo_client EXPORTING iv_key_name = 'PUBSUB_DEMO'.
" Populate relevant parameters
DATA(lv_p_projects_id) = CONV string( lo_client->gv_project_id ).
DATA(lv_p_topics_id) = CONV string( 'PUBSUB_DEMO_TOPIC' ).
ls_message-data = cl_http_utility=>encode_base64( unencoded = ' This message was published to topic' ).
APPEND ls_message TO ls_input-messages.
" Call API method : pubsub.topics.publish
" This method publishes the message(encoded in base64 format to the topic )
lo_client->publish_topics(
EXPORTING
iv_p_projects_id = lv_p_projects_id
iv_p_topics_id = lv_p_topics_id
is_input = ls_input
IMPORTING
es_output = DATA(ls_output)
ev_ret_code = DATA(lv_ret_code)
ev_err_text = DATA(lv_err_text)
es_err_resp = DATA(ls_err_resp) ).
IF lo_client->is_success( lv_ret_code ) = abap_true.
DATA(lv_msg) = 'Message was published to topic ' && ': ' && lv_p_topics_id.
MESSAGE lv_msg TYPE 'I' DISPLAY LIKE 'S'.
ELSE.
MESSAGE lv_err_text TYPE 'E'.
ENDIF.
" Close HTTP Connection
lo_client->close( ).
CATCH /goog/cx_sdk INTO DATA(lo_exception).
MESSAGE lv_err_text TYPE 'E'.
RETURN.
ENDTRY.
- احفظ التقرير وفعِّله.
- تنفيذ التقرير (F8).
عند تنفيذ الأمر بنجاح، من المفترض أن يظهر لك ناتج التقرير كما هو موضّح أدناه:
8. تهانينا
تهانينا! لقد نجحت في نشر رسالة إلى واجهة برمجة التطبيقات Pub/Sub API في Google Cloud Platform باستخدام حزمة ABAP SDK لـ Google Cloud.
يمكنك الآن المتابعة باستخدام رمز التطبيقي أدناه لمواصلة رحلتك التعليمية لاستخدام حزمة تطوير البرامج (SDK) ABAP للوصول إلى خدمات Google Cloud المختلفة.
- تلقّي حدث من Cloud Pub/Sub
- تحميل ملف إلى حزمة Cloud Storage باستخدام ميزة "تقسيم الملفات إلى أجزاء"
- الاتصال بتطبيق Vertex AI test-bison من ABAP
- . . .
9. تَنظيم
إذا كنت لا تريد مواصلة استخدام مجموعات الاختبار البرمجي الإضافية المرتبطة بحزمة تطوير البرامج (SDK) لـ ABAP في Google Cloud، يُرجى المتابعة لتنظيف المساحة.
حذف المشروع
- يُرجى اتّباع الخطوات التالية لحذف مشروع Google Cloud:
gcloud projects delete abap-sdk-poc
حذف موارد فردية
- حذف وحدة الحوسبة:
gcloud compute instances delete abap-trial-docker
- حذف قواعد جدار الحماية:
gcloud compute firewall-rules delete sapmachine
- لحذف حساب الخدمة:
gcloud iam service-accounts delete \
abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com