Google Cloud के लिए ABAP SDK टूल का इस्तेमाल करके, Cloud Pub/Sub पर कोई इवेंट पब्लिश करना

1. परिचय

इस कोडलैब में, हमने Google Cloud के लिए ABAP SDK का इस्तेमाल करके, Google Cloud Pub/Sub API पर इवेंट पब्लिश करने का तरीका बताया है.

इस कोडलैब में, Google Cloud की इन सेवाओं का इस्तेमाल किया गया है:

  • Pub/Sub
  • Cloud Shell

आपको क्या बनाना है

आपको इनके बारे में जानकारी मिलेगी:

  • Google Cloud प्रोजेक्ट में Pub/Sub चालू करें.
  • Pub/Sub विषय बनाएं.
  • मैसेज पब्लिश करना.

2. शुरू करने से पहले

6757b2fb50ddcc2d.png

  • अपने खाते की पुष्टि करने और डिफ़ॉल्ट प्रोजेक्ट को 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 सेवा के ये कॉम्पोनेंट शामिल हैं:

  • पब्लिशर (जिसे प्रोड्यूसर भी कहा जाता है): यह किसी खास विषय पर मैसेज बनाता है और उन्हें मैसेजिंग सेवा पर भेजता (पब्लिश करता) है.
  • मैसेज: मैसेजिंग सेवा के ज़रिए भेजा जाने वाला डेटा.
  • विषय: नाम वाली ऐसी इकाई जो मैसेज के फ़ीड को दिखाती है.

4f5676da8922467f.png

4. Pub/Sub सेवा सेट अप करना

  1. ज़रूरी भूमिका वाला सेवा खाता बनाने के लिए, Cloud Shell टर्मिनल में यह कमांड चलाएं:
gcloud iam service-accounts create abap-sdk-pubsub-tester --display-name="Service Account for PubSub"
  1. अपने सेवा खाते (abap-sdk-poc) में Pub/Sub API को चालू करने के लिए, Cloud Shell टर्मिनल में यह कमांड चलाएं:
gcloud services enable pubsub.googleapis.com
  1. विषय बनाने के लिए, सेवा खाते को आईएएम भूमिका pubsub.topics.create दें. Cloud 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'
  1. विषय पर मैसेज पब्लिश करने के लिए, सेवा खाते को IAM भूमिका pubsub.topics.publish दें. Cloud 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'
  1. भूमिकाएं जोड़ी गई हैं या नहीं, इसकी पुष्टि करने के लिए IAM पेज पर जाएं. आपने जो सेवा खाता बनाया है वह उन भूमिकाओं के साथ दिखना चाहिए जिन्हें उसे असाइन किया गया है.

5. क्लाइंट कुंजी कॉन्फ़िगर करना

/GOOG/CLIENT_KEY टेबल में कॉन्फ़िगरेशन को बनाए रखने के लिए, यह तरीका अपनाएं:

  1. SAP GUI में, ट्रांज़ैक्शन कोड SPRO डालें.
  2. SAP रेफ़रंस IMG पर क्लिक करें.
  3. Google Cloud के लिए ABAP SDK टूल > बुनियादी सेटिंग > क्लाइंट पासकोड कॉन्फ़िगर करें पर क्लिक करें.
  4. नई एंट्री पर क्लिक करें.
  5. नीचे दिए गए फ़ील्ड के लिए वैल्यू डालें:

फ़ील्ड

जानकारी

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

अन्य फ़ील्ड खाली छोड़ें

ec6b6f94bfa85533.png

6. विषय बनाना

एपीआई स्टब /GOOG/CL_PUBSUB_V1 के CREATE_TOPICS तरीके का इस्तेमाल करके, कोई विषय बनाया जाता है. तरीके का हस्ताक्षर:

d40fde108ccf2853.png

  1. SAP GUI में, ट्रांज़ैक्शन कोड SE38 डालें.
  2. ZPUBSUB_DEMO नाम से रिपोर्ट बनाएं.
  3. इसके बाद, खुलने वाले पॉप-अप में नीचे दी गई जानकारी दें और सेव करें पर क्लिक करें.

f9cbdabb6ca96fc4.png

  1. अगले पॉप-अप में, लोकल ऑब्जेक्ट चुनें या पैकेज का नाम डालें.
  2. 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.
  1. रिपोर्ट को सेव और चालू करें.
  2. रिपोर्ट को लागू करें (F8).

एक्सपोर्ट पूरा होने पर, आपको रिपोर्ट का आउटपुट यहां दिखाया गया है:

16aa8a4c59d776d9.png

7. विषय पर मैसेज पब्लिश करना

विषय तैयार होने के बाद, अब हम डेटा को सही तरीके से भेजने पर फ़ोकस कर सकते हैं. अगले चरण में, इस विषय पर मैसेज पब्लिश करने का तरीका जानें. एपीआई स्टब /GOOG/CL_PUBSUB_V1 के PUBLISH_TOPICS तरीके का इस्तेमाल करके, विषय पर मैसेज पब्लिश किए जाते हैं.

तरीके का हस्ताक्षर:

459fe21ce68bd811.png

  1. SAP GUI में, ट्रांज़ैक्शन कोड SE38 डालें.
  2. ZPUBSUB_DEMO_PUBLISH नाम से रिपोर्ट बनाएं.
  3. इसके बाद, खुलने वाले पॉप-अप में नीचे दी गई जानकारी दें और सेव करें पर क्लिक करें.

9a180c4e9a1e139.png

  1. अगले पॉप-अप में, लोकल ऑब्जेक्ट चुनें या पैकेज का नाम डालें.
  2. 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.
  1. रिपोर्ट को सेव और चालू करें.
  2. रिपोर्ट को लागू करें (F8).

एक्सपोर्ट पूरा होने पर, आपको रिपोर्ट का आउटपुट यहां दिखाया गया है:

384125235efc104.png

8. बधाई हो

बधाई हो! आपने Google Cloud के लिए ABAP SDK का इस्तेमाल करके, Google Cloud Platform के Pub/Sub API पर मैसेज पब्लिश कर दिया है.

Google Cloud की कई सेवाओं को ऐक्सेस करने के लिए, ABAP SDK का इस्तेमाल करने के बारे में जानने के लिए, अब नीचे दिए गए कोडलैब पर जाएं.

  • Cloud Pub/Sub से इवेंट पाना
  • एक से ज़्यादा हिस्सों में बांटकर, Cloud Storage की बकेट में फ़ाइल अपलोड करना
  • ABAP से Vertex AI test-bison को कॉल करना
  • . . .

9. व्यवस्थित करें

अगर आपको Google Cloud के लिए ABAP SDK टूल से जुड़े अन्य कोडलैब जारी नहीं रखने हैं, तो कृपया क्लीनअप की प्रक्रिया शुरू करें.

प्रोजेक्ट मिटाना

  • Google Cloud प्रोजेक्ट मिटाएं:
gcloud projects delete abap-sdk-poc

अलग-अलग संसाधन मिटाना

  1. कंप्यूट इंस्टेंस मिटाने के लिए:
gcloud compute instances delete abap-trial-docker
  1. फ़ायरवॉल के नियम मिटाएं:
gcloud compute firewall-rules delete sapmachine
  1. सेवा खाता मिटाने के लिए:
gcloud iam service-accounts delete \
    abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com