Memublikasikan peristiwa ke Cloud Pub/Sub menggunakan ABAP SDK untuk Google Cloud

1. Pengantar

Dalam codelab ini, kami telah mencantumkan langkah-langkah untuk memublikasikan peristiwa ke Google Cloud Pub/Sub API menggunakan ABAP SDK untuk Google Cloud.

Layanan Google Cloud berikut digunakan dalam codelab ini:

  • Pub/Sub
  • Cloud Shell

Yang akan Anda build

Anda akan mempelajari hal berikut:

  • Aktifkan Pub/Sub di project Google Cloud.
  • Buat topik Pub/Sub.
  • Memublikasikan pesan.

2. Sebelum memulai

6757b2fb50ddcc2d.png

  • Jalankan perintah berikut untuk melakukan autentikasi untuk akun Anda dan menetapkan project default ke abap-sdk-poc. Zona us-west4-b digunakan sebagai contoh. Jika diperlukan, ubah project dan zona dalam perintah berikut berdasarkan preferensi Anda.
gcloud auth login
gcloud config set project abap-sdk-poc
gcloud config set compute/zone us-west4-b

3. Ringkasan

Cakupan codelab ini melibatkan komponen layanan Pub/Sub berikut:

  • Penayang (juga disebut produsen): membuat pesan dan mengirim (memublikasikan) pesan tersebut ke layanan pesan pada topik yang ditentukan.
  • Pesan: data yang bergerak melalui layanan pesan.
  • Topik: entitas bernama yang mewakili feed pesan.

4f5676da8922467f.png

4. Menyiapkan layanan Pub/Sub

  1. Untuk membuat akun layanan dengan peran yang diperlukan, jalankan perintah berikut di terminal Cloud Shell:
gcloud iam service-accounts create abap-sdk-pubsub-tester --display-name="Service Account for PubSub"
  1. Untuk mengaktifkan Pub/Sub API ke akun layanan Anda (abap-sdk-poc), jalankan perintah berikut di terminal Cloud Shell:
gcloud services enable pubsub.googleapis.com
  1. Berikan peran IAM pubsub.topics.create ke akun layanan agar dapat membuat topik. Jalankan perintah berikut di terminal 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. Berikan peran IAM pubsub.topics.publish ke akun layanan agar dapat memublikasikan pesan ke topik. Jalankan perintah berikut di terminal 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. Untuk memverifikasi bahwa peran telah ditambahkan, buka halaman IAM. Akun layanan yang Anda buat akan tercantum beserta peran yang telah ditetapkan.

5. Mengonfigurasi kunci klien

Untuk mempertahankan konfigurasi di tabel /GOOG/CLIENT_KEY, lakukan langkah-langkah berikut:

  1. Di SAP GUI, masukkan kode transaksi SPRO.
  2. Klik IMG Referensi SAP.
  3. Klik ABAP SDK for Google Cloud > Basic Settings > Configure Client Key.
  4. Klik New Entries.
  5. Masukkan nilai untuk kolom berikut:

Kolom

Deskripsi

Google Cloud Key Name

PUBSUB_DEMO

Nama Akun Layanan Google Cloud

abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com

Google Cloud Scope

https://www.googleapis.com/auth/cloud-platform

ID Project Google Cloud

abap-sdk-poc

Class Otorisasi

/GOOG/CL_AUTH_GOOGLE

Biarkan kolom lainnya kosong

ec6b6f94bfa85533.png

6. Membuat topik

Anda membuat topik menggunakan metode CREATE_TOPICS dari stub API /GOOG/CL_PUBSUB_V1. Tanda tangan metode:

d40fde108ccf2853.png

  1. Di SAP GUI, masukkan kode transaksi SE38.
  2. Buat laporan dengan nama ZPUBSUB_DEMO.
  3. Di pop-up yang terbuka, berikan detail seperti yang ditunjukkan di bawah, lalu klik Simpan.

f9cbdabb6ca96fc4.png

  1. Di pop-up berikutnya, pilih Local Object atau berikan nama paket yang sesuai.
  2. Di ABAP Editor, tambahkan kode berikut:
" 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. Simpan dan aktifkan laporan.
  2. Jalankan laporan (F8).

Jika berhasil dieksekusi, Anda akan melihat output laporan seperti yang ditunjukkan di bawah ini:

16aa8a4c59d776d9.png

7. Memublikasikan pesan ke topik

Setelah topik siap, sekarang kita dapat berfokus untuk mengirim data. Sebagai langkah berikutnya, mari kita pelajari cara memublikasikan pesan tentang topik ini. Pesan dipublikasikan ke topik menggunakan metode PUBLISH_TOPICS dari stub API /GOOG/CL_PUBSUB_V1.

Tanda tangan metode:

459fe21ce68bd811.png

  1. Di SAP GUI, masukkan kode transaksi SE38.
  2. Buat laporan dengan nama ZPUBSUB_DEMO_PUBLISH.
  3. Di pop-up yang terbuka, berikan detail seperti yang ditunjukkan di bawah, lalu klik Simpan.

9a180c4e9a1e139.png

  1. Di pop-up berikutnya, pilih Local Object atau berikan nama paket yang sesuai.
  2. Di ABAP Editor, tambahkan kode berikut:
" 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. Simpan dan aktifkan laporan.
  2. Jalankan laporan (F8).

Jika berhasil dieksekusi, Anda akan melihat output laporan seperti yang ditunjukkan di bawah ini:

384125235efc104.png

8. Selamat

Selamat! Anda telah berhasil memublikasikan pesan ke Pub/Sub API Google Cloud Platform menggunakan ABAP SDK untuk Google Cloud.

Sekarang Anda dapat melanjutkan dengan codelab di bawah untuk melanjutkan perjalanan pembelajaran Anda dalam menggunakan ABAP SDK untuk mengakses berbagai Layanan Google Cloud.

  • Menerima peristiwa dari Cloud Pub/Sub
  • Mengupload File ke Bucket Cloud Storage dengan Pembagian Bagian
  • Memanggil Vertex AI test-bison dari ABAP
  • . . .

9. Pembersihan

Jika Anda tidak ingin melanjutkan codelab tambahan yang terkait dengan ABAP SDK untuk Google Cloud, lanjutkan pembersihan.

Menghapus project

  • Hapus project Google Cloud:
gcloud projects delete abap-sdk-poc

Menghapus resource satu per satu

  1. Hapus instance komputasi:
gcloud compute instances delete abap-trial-docker
  1. Hapus aturan Firewall:
gcloud compute firewall-rules delete sapmachine
  1. Hapus akun layanan:
gcloud iam service-accounts delete \
    abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com