เผยแพร่เหตุการณ์ไปยัง Cloud Pub/Sub โดยใช้ ABAP SDK สำหรับ Google Cloud

เผยแพร่เหตุการณ์ไปยัง Cloud Pub/Sub โดยใช้ ABAP SDK สําหรับ Google Cloud

เกี่ยวกับ Codelab นี้

subjectอัปเดตล่าสุดเมื่อ ก.ย. 4, 2024
account_circleเขียนโดย Sanchita Mohta

1 บทนำ

ในโค้ดแล็บนี้ เราได้แสดงขั้นตอนในการเผยแพร่เหตุการณ์ไปยัง Google Cloud Pub/Sub API โดยใช้ ABAP SDK สําหรับ Google Cloud

บริการ Google Cloud ที่ใช้ในโค้ดแล็บนี้มีดังนี้

  • Pub/Sub
  • Cloud Shell

สิ่งที่คุณจะสร้าง

คุณจะได้เรียนรู้สิ่งต่อไปนี้

  • เปิดใช้ Pub/Sub ในโปรเจ็กต์ Google Cloud
  • สร้างหัวข้อ 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. หากต้องการเปิดใช้ Pub/Sub API ในบัญชีบริการ (abap-sdk-poc) ให้เรียกใช้คําสั่งต่อไปนี้ในเทอร์มินัล Cloud Shell
gcloud services enable pubsub.googleapis.com
  1. ให้บทบาท IAM 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 Reference IMG
  3. คลิก ABAP SDK สําหรับ Google Cloud > การตั้งค่าพื้นฐาน > กําหนดค่าคีย์ไคลเอ็นต์
  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 สร้างหัวข้อ

คุณสร้างหัวข้อได้โดยใช้เมธอด CREATE_TOPICS ของ API Stub /GOOG/CL_PUBSUB_V1 ลายเซ็นของเมธอด

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 เผยแพร่ข้อความไปยังหัวข้อ

เมื่อหัวข้อพร้อมแล้ว เราก็มุ่งเน้นที่การส่งข้อมูลได้ ขั้นตอนถัดไปคือมาดูวิธีเผยแพร่ข้อความในหัวข้อนี้ ระบบจะเผยแพร่ข้อความไปยังหัวข้อโดยใช้เมธอด PUBLISH_TOPICS ของสตับ API /GOOG/CL_PUBSUB_V1

ลายเซ็นของเมธอด

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 ขอแสดงความยินดี

ยินดีด้วย คุณได้เผยแพร่ข้อความไปยัง Pub/Sub API ของ Google Cloud Platform โดยใช้ ABAP SDK สําหรับ Google Cloud เรียบร้อยแล้ว

ตอนนี้คุณก็เริ่มทำตาม Codelab ด้านล่างเพื่อเรียนรู้วิธีใช้ ABAP SDK เพื่อเข้าถึงบริการต่างๆ ของ Google Cloud ต่อได้แล้ว

  • รับเหตุการณ์จาก Cloud Pub/Sub
  • อัปโหลดไฟล์ไปยังที่เก็บข้อมูล Cloud Storage ด้วยการจัดแบ่งกลุ่ม
  • เรียกใช้ Vertex AI test-bison จาก ABAP
  • . .

9 ล้างข้อมูล

หากไม่ต้องการทำ Codelab เพิ่มเติมที่เกี่ยวข้องกับ ABAP SDK สำหรับ Google Cloud โปรดดำเนินการล้างข้อมูล

ลบโปรเจ็กต์

  • ลบโปรเจ็กต์ 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