1. ভূমিকা
এই কোডল্যাবটি Google ক্লাউডের জন্য ABAP SDK ব্যবহার করে একটি Google ক্লাউড পাব/সাব বিষয় থেকে ইভেন্টের বিশদ বিবরণ পাওয়ার মাধ্যমে আপনাকে গাইড করে। আমরা নিম্নলিখিত Google ক্লাউড পরিষেবাগুলি ব্যবহার করব:
- ক্লাউড পাব/সাব
- মেঘের শেল
পূর্বশর্ত
- Google ক্লাউড ইনস্টল করার জন্য ABAP SDK সহ একটি SAP সিস্টেমে আপনার অ্যাক্সেস রয়েছে তা নিশ্চিত করুন৷
- আপনি একটি নতুন সিস্টেম সেট আপ করতে " Google ক্লাউড প্ল্যাটফর্মে ABAP প্ল্যাটফর্ম ট্রায়াল ইনস্টল করুন এবং ABAP SDK ইনস্টল করুন " কোডল্যাবটি উল্লেখ করতে পারেন।
- আপনি আপনার Google ক্লাউড প্রজেক্টে কোডল্যাবের অংশ হিসাবে একটি বিষয়
PUBSUB_DEMO_TOPIC
তৈরি করেছেন " ABAP SDK ব্যবহার করে SAP থেকে Pub/Sub-এ ইভেন্টগুলি পাঠান "৷ তৈরি না হলে, একই তৈরি করতে নীচের কমান্ডটি ব্যবহার করুন:
gcloud pubsub topics create PUBSUB_DEMO_TOPIC
আপনি কি নির্মাণ করবেন
আপনি নিম্নলিখিত তৈরি করবেন:
- Pub/Sub API-এর সাথে ইন্টারঅ্যাক্ট করার জন্য 'সাবস্ক্রাইবার' অনুমতি সহ একটি পরিষেবা অ্যাকাউন্ট।
- আপনার পাব/সাব বিষয় থেকে বার্তা গ্রহণ এবং স্বীকার করার জন্য একটি ABAP প্রোগ্রাম।
2. প্রয়োজনীয়তা
- ব্রাউজার, যেমন ক্রোম বা ফায়ারফক্স ।
- বিলিং সক্ষম সহ একটি Google ক্লাউড প্রকল্প বা Google ক্লাউড প্ল্যাটফর্মের জন্য একটি 90-দিনের বিনামূল্যে ট্রায়াল অ্যাকাউন্ট তৈরি করুন ৷
- আপনার সিস্টেমে ইনস্টল করা SAP GUI (উইন্ডোজ বা জাভা)। যদি আপনার ল্যাপটপে SAP GUI ইতিমধ্যেই ইনস্টল করা থাকে, তাহলে অ্যাপ্লিকেশন সার্ভার IP হিসাবে VM বাহ্যিক IP ঠিকানা ব্যবহার করে SAP-এর সাথে সংযোগ করুন। আপনি যদি ম্যাকে থাকেন, তাহলে আপনি এই লিঙ্কে উপলব্ধ জাভার জন্য SAP GUI ইনস্টল করতে পারেন।
3. আপনি শুরু করার আগে
- Google ক্লাউড কনসোলে , প্রকল্প নির্বাচক পৃষ্ঠায়, একটি Google ক্লাউড প্রকল্প নির্বাচন করুন বা তৈরি করুন (উদাহরণস্বরূপ:
abap-sdk-poc
)। - আপনার ক্লাউড প্রকল্পের জন্য বিলিং সক্ষম করা আছে তা নিশ্চিত করুন। একটি প্রকল্পে বিলিং সক্ষম কিনা তা পরীক্ষা করতে শিখুন। আপনি যদি 90-দিনের ফ্রি ট্রায়াল অ্যাকাউন্ট ব্যবহার করেন তবে এই ধাপটি এড়িয়ে যান।
- আপনি Cloud Shell ব্যবহার করবেন, Google ক্লাউডে চলমান একটি কমান্ড-লাইন পরিবেশ। ক্লাউড কনসোল থেকে, উপরের ডানদিকে কোণায় ক্লাউড শেল সক্রিয় করুন ক্লিক করুন:
- আপনার অ্যাকাউন্টের জন্য প্রমাণীকরণ করতে নিম্নলিখিত কমান্ডগুলি চালান এবং ডিফল্ট প্রকল্পটিকে
abap-sdk-poc
এ সেট করুন। Zoneus-west4-b
উদাহরণ হিসেবে ব্যবহার করা হয়েছে। যদি প্রয়োজন হয়, অনুগ্রহ করে আপনার পছন্দের উপর ভিত্তি করে নিম্নলিখিত কমান্ডগুলিতে প্রকল্প এবং অঞ্চল পরিবর্তন করুন।
gcloud auth login
gcloud config set project abap-sdk-poc
gcloud config set compute/zone us-west4-b
- পূর্ববর্তী কোডল্যাবের একটি অংশ হিসাবে " Pub/Sub-এ ইভেন্ট পাঠান ", আপনি অবশ্যই ইতিমধ্যেই pub/sub API সক্রিয় করেছেন , বিষয় তৈরি করেছেন এবং Pub/Sub-এ বার্তা প্রকাশ করেছেন ৷
4. পাব/সাব অ্যাক্সেসের জন্য একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন৷
Subscriber
ভূমিকা সহ একটি পরিষেবা অ্যাকাউন্ট ব্যবহার করা হল আপনার ABAP প্রোগ্রামের Pub/Sub থেকে বার্তা পাওয়ার সবচেয়ে নিরাপদ উপায়। এই ভূমিকা শুধুমাত্র বার্তা পুনরুদ্ধারের অনুমতি সীমিত করে, সম্ভাব্য নিরাপত্তা দুর্বলতা প্রতিরোধ করে।
পরিষেবা অ্যাকাউন্ট তৈরি করুন
প্রয়োজনীয় ভূমিকা সহ একটি পরিষেবা অ্যাকাউন্ট তৈরি করতে, নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:
- ক্লাউড শেল টার্মিনালে নিম্নলিখিত কমান্ডটি চালান:
gcloud iam service-accounts \
create abap-sdk-pubsub-subscriber \
--display-name="Service Account for Pub/Sub Subscriber"
- এখন উপরের ধাপে তৈরি পরিষেবা অ্যাকাউন্টে প্রয়োজনীয় ভূমিকা যোগ করুন:
gcloud projects add-iam-policy-binding abap-sdk-poc \
--member='serviceAccount:abap-sdk-pubsub-subscriber@abap-sdk-poc.iam.gserviceaccount.com' \
--role='roles/pubsub.subscriber'
উপরের কমান্ডটি Google ক্লাউড প্রকল্পের জন্য একটি স্থানধারক হিসাবে abap-sdk-poc
ব্যবহার করে। abap-sdk-poc
আপনার প্রজেক্ট আইডি দিয়ে প্রতিস্থাপন করুন।
- যাচাই করতে, ভূমিকা যোগ করা হয়েছে, IAM পৃষ্ঠায় যান। আপনি যে পরিষেবা অ্যাকাউন্টটি তৈরি করেছেন সেটিকে নির্ধারিত ভূমিকা সহ তালিকাভুক্ত করা উচিত।
5. টান সাবস্ক্রিপশন বোঝা
পুল সাবস্ক্রিপশনের জন্য, আপনার SAP সিস্টেম গ্রাহক ক্লায়েন্ট হিসাবে কাজ করে এবং বার্তাগুলি পুনরুদ্ধার করার জন্য একটি পাব/সাব সার্ভারের কাছে অনুরোধ শুরু করে। গ্রাহক ক্লায়েন্ট REST Pull API ব্যবহার করে।
কী API পদ্ধতি
Google Cloud Pub/Sub API
- pull: বার্তা আনার জন্য একটি অনুরোধ শুরু করে।
- স্বীকার করুন: Pub/Sub-কে সংকেত দেয় যে একটি বার্তা সফলভাবে প্রক্রিয়া করা হয়েছে।
Google ক্লাউড সমতুল্যের জন্য ABAP SDK
- /GOOG/CL_PUBSUB_V1 -> PULL_SUBSCRIPTIONS৷
- /GOOG/CL_PUBSUB_V1 -> ACKNOWLEDGE_SUBSCRIPTIONS
একটি পুল সদস্যতার জন্য বার্তা প্রবাহ
নিম্নলিখিত চিত্রটি গ্রাহক ক্লায়েন্ট এবং একটি পুল সাবস্ক্রিপশনের মধ্যে কার্যপ্রবাহ দেখায়।
- অনুরোধ টানুন: আপনার SAP সিস্টেম (সাবস্ক্রাইবার) পাব/সাব সার্ভার থেকে বার্তাগুলির অনুরোধ করার জন্য পুল পদ্ধতি ব্যবহার করে।
- পুল রেসপন্স : পাব/সাব সার্ভার শূন্য বা তার বেশি বার্তা এবং স্বীকৃতি আইডি সহ সাড়া দেয়। শূন্য বার্তা সহ বা একটি ত্রুটি সহ একটি প্রতিক্রিয়া অগত্যা নির্দেশ করে না যে গ্রহণ করার জন্য কোনও বার্তা উপলব্ধ নেই৷ এই প্রতিক্রিয়া হল PullResponse যেমন ছবিতে দেখানো হয়েছে।
- স্বীকৃতি: একটি বার্তা প্রক্রিয়া করার পরে, আপনার SAP সিস্টেম প্রাপ্ত স্বীকৃতি আইডি সহ স্বীকৃতি পদ্ধতি ব্যবহার করে। এটি Pub/Sub-কে বার্তা পুনরায় বিতরণ করা থেকে বাধা দেয়।
6. আপনার সদস্যতা সেট আপ করা এবং বার্তা পাঠানো
একটি পুল সাবস্ক্রিপশন তৈরি করুন
-
PUBSUB_DEMO_SUBSCRIPTION
নামে একটি পুল সদস্যতা তৈরি করতে এই gcloud কমান্ডটি চালান যাPUBSUB_DEMO_TOPIC
থেকে বার্তাগুলি পাবে :
gcloud pubsub subscriptions create PUBSUB_DEMO_SUBSCRIPTION \
--topic=PUBSUB_DEMO_TOPIC
বার্তা প্রকাশ করুন
PUBSUB_DEMO_TOPIC
এ বার্তা পাঠাতে এই পদ্ধতিগুলির মধ্যে একটি বেছে নিন:
- আপনার প্রোগ্রাম পুনঃব্যবহার করুন: যদি আপনার কাছে প্রকাশের জন্য পূর্ববর্তী কোডল্যাব থেকে প্রোগ্রাম থাকে তবে সেটি ব্যবহার করুন।
- সরাসরি প্রকাশনা : একটি দ্রুত পরীক্ষার জন্য, নিম্নলিখিত বিকল্পগুলির মধ্যে একটি চেষ্টা করুন:
- ক্লাউড কনসোল: সরাসরি Google ক্লাউড কনসোলের মধ্যে প্রকাশ করুন। আরো বিস্তারিত জানার জন্য, পাব/সাব ডকুমেন্টেশন দেখুন।
- gcloud কমান্ড: নিম্নলিখিত কমান্ড চালান:
gcloud pubsub topics publish PUBSUB_DEMO_TOPIC \
--message='{"eventType":"SalesOrderChanged","source":"SAPDEV100","eventTime":"20240207183048","SalesOrder":1000924}'
7. ক্লায়েন্ট কী কনফিগারেশন তৈরি করুন
এখন যেহেতু আপনি Google ক্লাউড সাইডে প্রাক-প্রয়োজনীয়তা সেট আপ করেছেন, আমরা SAP সাইডে কনফিগারেশন নিয়ে এগিয়ে যেতে পারি।
প্রমাণীকরণ এবং সংযোগ সম্পর্কিত কনফিগারেশনের জন্য, Google ক্লাউডের জন্য ABAP SDK টেবিলগুলি /GOOG/CLIENT_KEY
এবং /GOOG/SERVIC_MAP.
/GOOG/CLIENT_KEY
টেবিলে কনফিগারেশন বজায় রাখতে, নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:
- SAP GUI-তে, লেনদেন কোড SPRO লিখুন।
- SAP রেফারেন্স IMG এ ক্লিক করুন।
- Google ক্লাউড > বেসিক সেটিংস > কনফিগার ক্লায়েন্ট কী-এর জন্য ABAP SDK-এ ক্লিক করুন।
- ক্ষেত্রগুলির বিপরীতে নিম্নলিখিত মানগুলি বজায় রাখুন। অন্য সব ক্ষেত্র ফাঁকা রাখুন।
মাঠ | মান |
গুগল ক্লাউড কী নাম | PUBSUB_SUBSCRIBER |
Google ক্লাউড পরিষেবা অ্যাকাউন্টের নাম | abap-sdk-pubsub-subscriber@abap-sdk-poc.iam.gserviceaccount.com |
গুগল ক্লাউড স্কোপ | https://www.googleapis.com/auth/cloud-platform |
প্রকল্প আইডি | abap-sdk-poc |
অনুমোদন শ্রেণী | /GOOG/CL_AUTH_GOOGLE৷ |
8. Google Cloud Pub/Sub থেকে বার্তা পেতে একটি ABAP রিপোর্ট তৈরি করুন৷
- আপনার SAP সিস্টেমে লগ ইন করুন।
- লেনদেন কোড
SE38
এ যান এবংZDEMO_RECEIVE_CPS_EVENTS.
- পপ-আপে যেটি খোলে, নীচে দেখানো হিসাবে বিশদ বিবরণ প্রদান করুন এবং সংরক্ষণ করুন ক্লিক করুন।
- পরবর্তী পপ-আপে, হয় স্থানীয় অবজেক্ট নির্বাচন করুন বা উপযুক্ত হিসাবে একটি প্যাকেজ নাম দিন।
- ABAP সম্পাদকে, নিম্নলিখিত কোড যোগ করুন:
REPORT zdemo_receive_cps_events. TYPES: BEGIN OF ty_event_message, event_time TYPE timestamp, event_type TYPE char30, source TYPE char30, sales_order TYPE vbeln, END OF ty_event_message. DATA: ls_input TYPE /goog/cl_pubsub_v1=>ty_026, ls_input_ack TYPE /goog/cl_pubsub_v1=>ty_001, ls_event_msg TYPE ty_event_message. TRY. "Open HTTP Connection DATA(lo_client) = NEW /goog/cl_pubsub_v1( iv_key_name = 'PUBSUB_SUBSCRIBER' ). "Populate relevant parameters " Derive project id from the client object DATA(lv_p_projects_id) = CONV string( lo_client->gv_project_id ). " Name of the subscription from where we want to pull data DATA(lv_p_subscriptions_id) = CONV string( 'PUBSUB_DEMO_SUBSCRIPTION' ). " Max number of messages that will be received in 1 API call ls_input-max_messages = 1. "Call API method: pubsub.projects.subscriptions.pull lo_client->pull_subscriptions( EXPORTING iv_p_projects_id = lv_p_projects_id iv_p_subscriptions_id = lv_p_subscriptions_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 ). DATA(ls_received_msg) = VALUE #( ls_output-received_messages[ 1 ] OPTIONAL ). IF ls_received_msg IS NOT INITIAL. "Messages published to Pub/Sub should be base-64 encoded, hence in order to get the exact message, we need to decode the data field. "However, attributes published to Pub/Sub should be accessible as data references. DATA(lv_msg) = |{ cl_http_utility=>decode_base64( encoded = ls_received_msg-message-data ) }|. /ui2/cl_json=>deserialize( EXPORTING json = lv_msg pretty_name = /ui2/cl_json=>pretty_mode-extended CHANGING data = ls_event_msg ). cl_demo_output=>new( )->begin_section( |Receive Events from Cloud Pubsub using ABAP SDK for Google Cloud| )->write_text( |The below event was successfully received with message ID { ls_received_msg-message-MESSAGE_ID }| )->write_data( ls_event_msg )->end_section( )->display( ). ls_input_ack-ack_ids = VALUE #( ( ls_received_msg-ack_id ) ). "Call API method: pubsub.projects.subscriptions.acknowledge "Acknowledge the messages so it is not pulled again. lo_client->acknowledge_subscriptions( EXPORTING iv_p_projects_id = lv_p_projects_id iv_p_subscriptions_id = lv_p_subscriptions_id is_input = ls_input_ack IMPORTING es_output = DATA(ls_output_ack) ev_ret_code = lv_ret_code ev_err_text = lv_err_text es_err_resp = ls_err_resp ). IF lo_client->is_success( lv_ret_code ). MESSAGE lv_msg TYPE 'S'. ELSE. MESSAGE lv_err_text TYPE 'E'. ENDIF. ELSE. MESSAGE 'No Messages were received!' TYPE 'S'. ENDIF. 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'. ENDTRY.
- প্রতিবেদনটি সংরক্ষণ করুন এবং সক্রিয় করুন।
- রিপোর্ট চালান (F8)।
সফলভাবে সঞ্চালন করার সময় আপনাকে নীচে দেখানো হিসাবে রিপোর্ট আউটপুট দেখতে হবে:
9. ABAP পাব/সাবস্ক্রাইবার কোড ব্যাখ্যা করা হয়েছে
সারমর্মে, এই ABAP প্রোগ্রামটি Google Cloud Pub/Sub-এর সাথে বার্তা গ্রাহক হিসেবে একীভূত হয়। এটি চাহিদা অনুযায়ী নতুন বার্তাগুলির জন্য একটি নির্দিষ্ট সাবস্ক্রিপশন চেক করে, সেগুলিকে প্রসেস করে এবং তারপরে ভবিষ্যতে পুনঃবিতরন রোধ করতে তাদের অভ্যর্থনা স্বীকার করে৷
প্রোগ্রাম নিম্নলিখিত কার্যক্রম করবে:
ধাপে ধাপে ভাঙ্গন
সংযোগ স্থাপন করুন:
- এটি
/GOOG/CL_PUBSUB_V1
ক্লাস ব্যবহার করে Google ক্লাউড পাব/সাব পরিষেবাতে একটি HTTP সংযোগ স্থাপন করে।
পরামিতি সেট করুন:
- প্রজেক্ট আইডি : প্রাসঙ্গিক প্রোজেক্ট আইডি বের করে যেখানে পাব/সাবস্ক্রিপশন থাকে।
- সাবস্ক্রিপশনের নাম: সাবস্ক্রিপশনের নাম উল্লেখ করে যেখান থেকে বার্তাগুলি টেনে আনতে হবে (
PUBSUB_DEMO_SUBSCRIPTION
)। - বার্তা সীমা : একটি একক API কলে পুনরুদ্ধারের জন্য সর্বাধিক সংখ্যক বার্তা সেট করে (এই ক্ষেত্রে, 1)।
বার্তা আনুন:
- নির্দিষ্ট সাবস্ক্রিপশন থেকে বার্তাগুলি পুনরুদ্ধার করতে
pull_subscriptions
পদ্ধতিতে কল করে।
প্রাপ্ত বার্তাগুলি প্রক্রিয়া করুন:
- বার্তা বিদ্যমান থাকলে, প্রোগ্রামটি ডেটা ডিকোড করে, বিষয়বস্তু লগ করে এবং একটি স্বীকৃতি পাঠায়।
বার্তা স্বীকার করুন:
- বার্তাগুলির সফল প্রাপ্তি নির্দেশ করে Pub/Sub-এ একটি স্বীকৃতি পাঠাতে
acknowledge_subscriptions
পদ্ধতিতে কল করে। এটি তাদের পুনরায় বিতরণ করা থেকে বাধা দেয়।
সফলতা/ত্রুটি পরিচালনা করুন:
- বার্তাগুলি গৃহীত এবং স্বীকার করা হলে সাফল্যের বার্তা প্রদান করে এবং বিভিন্ন ব্যর্থতার পরিস্থিতির জন্য ত্রুটি বার্তা প্রদর্শন করে (কোনও বার্তা প্রাপ্ত হয়নি, API ত্রুটি, ইত্যাদি)৷
সংযোগ বন্ধ করুন:
- পাব/সাব পরিষেবাতে HTTP সংযোগ বন্ধ করে।
10. অভিনন্দন
"গুগল ক্লাউডের জন্য ABAP SDK ব্যবহার করে ক্লাউড পাব/সাব থেকে একটি ইভেন্ট গ্রহণ করুন" কোডল্যাব সম্পূর্ণ করার চমৎকার কাজ!
আপনি সফলভাবে ABAP এবং Google Cloud Pub/Sub-এর মধ্যে একটি সেতু তৈরি করেছেন! আপনার কোডল্যাব সমাপ্তি ইভেন্ট-চালিত মেসেজিং এবং Google ক্লাউড পরিষেবাগুলির সাথে একীভূত করার জন্য কীভাবে Google ক্লাউডের জন্য ABAP SDK ব্যবহার করতে হয় তার একটি দৃঢ় উপলব্ধি প্রদর্শন করে৷ ভালো হয়েছে!
আপনি ABAP এবং Google ক্লাউড পরিষেবাগুলির মধ্যে একীকরণের একটি নতুন স্তর আনলক করেছেন৷ এই উত্তেজনাপূর্ণ বিকল্পগুলির সাথে আপনার দিগন্ত প্রসারিত করুন:
- Google ক্লাউডের জন্য ABAP SDK-এর সাথে অনুবাদ API ব্যবহার করা
- চাঙ্কিং ব্যবহার করে একটি ক্লাউড স্টোরেজ বালতিতে একটি বড় বস্তু আপলোড করুন
- গুগল ক্লাউডের জন্য ABAP SDK-এর মাধ্যমে সিক্রেট ম্যানেজার থেকে শংসাপত্র/গোপন তথ্য পুনরুদ্ধার করা হচ্ছে
- ABAP থেকে Vertex AI টেস্ট-বাইসন কল করুন
- ABAP থেকে BigQuery ML-এ কল করুন
11. পরিষ্কার করুন
আপনি যদি Google ক্লাউডের জন্য ABAP SDK-এর সাথে সম্পর্কিত অতিরিক্ত কোডল্যাবগুলি চালিয়ে যেতে না চান, তাহলে অনুগ্রহ করে পরিষ্কারের সাথে এগিয়ে যান৷
প্রকল্পটি মুছুন
- Google ক্লাউড প্রকল্প মুছুন:
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-pubsub-subscriber@abap-sdk-poc.iam.gserviceaccount.com