1. परिचय
इस कोडलैब में, ABAP SDK for Google Cloud का इस्तेमाल करके, Google Cloud Pub/Sub API पर इवेंट पब्लिश करने का तरीका बताया गया है.
इस कोडलैब में, Google Cloud की इन सेवाओं का इस्तेमाल किया गया है:
- Pub/Sub
- Cloud Shell
आपको क्या बनाना है
आपको इनके बारे में जानकारी मिलेगी:
- किसी Google Cloud प्रोजेक्ट में Pub/Sub चालू करें.
- Pub/Sub का कोई विषय बनाएं.
- मैसेज पब्लिश करना.
2. शुरू करने से पहले
- आपने अपने सिस्टम पर ABAP SDK for Google Cloud इंस्टॉल किया हो. नया सिस्टम सेट अप करने के लिए, कोडलैब देखें: Google Cloud Platform पर ABAP का ट्रायल वर्शन इंस्टॉल करना.
- आपने Google Cloud में चलने वाले कमांड-लाइन एनवायरमेंट, Cloud Shell का इस्तेमाल किया हो. 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"
- अपने सेवा खाते (
abap-sdk-poc
) के लिए Pub/Sub API चालू करने के लिए, Cloud Shell टर्मिनल में यह कमांड चलाएं:
gcloud services enable pubsub.googleapis.com
- विषय बनाने के लिए, सेवा खाते को IAM भूमिका pubsub.topics.create असाइन करें. क्लाउड शेल टर्मिनल में यह कमांड चलाएं:
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'
- विषय पर कोई मैसेज पब्लिश करने के लिए, सेवा खाते को IAM भूमिका pubsub.topics.publish असाइन करें. क्लाउड शेल टर्मिनल में यह कमांड चलाएं:
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 GUI में, ट्रांज़ैक्शन कोड 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. कोई विषय बनाना
एपीआई स्टब /GOOG/CL_PUBSUB_V1 के CREATE_TOPICS तरीके का इस्तेमाल करके, कोई विषय बनाया जाता है. तरीके का हस्ताक्षर:
- SAP GUI में, लेन-देन का कोड SE38 डालें.
- ZPUBSUB_DEMO नाम की रिपोर्ट बनाएं.
- खुलने वाले पॉप-अप में, यहां दिखाई गई जानकारी डालें. इसके बाद, सेव करें पर क्लिक करें.
- अगले पॉप-अप में, Local Object चुनें या पैकेज का नाम डालें.
- 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. विषय पर मैसेज पब्लिश करना
विषय तैयार होने के बाद, अब हम उस विषय से जुड़ा डेटा भेजने पर फ़ोकस कर सकते हैं. अगले चरण में, आइए इस विषय पर मैसेज पब्लिश करने का तरीका जानें. मैसेज, एपीआई स्टब /GOOG/CL_PUBSUB_V1
के PUBLISH_TOPICS
तरीके का इस्तेमाल करके विषय पर पब्लिश किए जाते हैं.
तरीके का हस्ताक्षर:
- SAP GUI में, लेन-देन कोड SE38 डालें.
- ZPUBSUB_DEMO_PUBLISH नाम की रिपोर्ट बनाएं.
- खुलने वाले पॉप-अप में, यहां दिखाई गई जानकारी डालें. इसके बाद, सेव करें पर क्लिक करें.
- अगले पॉप-अप में, Local Object चुनें या पैकेज का नाम डालें.
- 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. बधाई हो
बधाई हो! आपने Google Cloud के ABAP SDK का इस्तेमाल करके, Google Cloud Platform के Pub/Sub API पर मैसेज पब्लिश कर दिया है.
Google Cloud की अलग-अलग सेवाओं को ऐक्सेस करने के लिए, ABAP SDK का इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, अब नीचे दिए गए कोडलैब का इस्तेमाल करें.
- Cloud Pub/Sub से इवेंट पाना
- Chunking की सुविधा का इस्तेमाल करके, Cloud Storage बकेट में फ़ाइल अपलोड करना
- ABAP से Vertex AI test-bison को कॉल करना
- . . .
9. व्यवस्थित करें
अगर आपको Google Cloud के लिए ABAP SDK से जुड़े अन्य कोडलैब का इस्तेमाल नहीं करना है, तो कृपया क्लीनअप की प्रोसेस पूरी करें.
प्रोजेक्ट मिटाना
- 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