Google Cloud için ABAP SDK'yı kullanarak Cloud Pub/Sub'da etkinlik yayınlama

Google Cloud için ABAP SDK'sını kullanarak Cloud Pub/Sub'a etkinlik yayınlama

Bu codelab hakkında

subjectSon güncelleme Eyl 4, 2024
account_circleYazan: Sanchita Mohta

1. Giriş

Bu kod laboratuvarında, Google Cloud için ABAP SDK'sını kullanarak bir etkinliği Google Cloud Pub/Sub API'ye yayınlama adımlarını listeledik.

Bu kod laboratuvarında aşağıdaki Google Cloud hizmetleri kullanılmaktadır:

  • Pub/Sub
  • Cloud Shell

Ne oluşturacaksınız?

Aşağıdakileri öğreneceksiniz:

  • Google Cloud projesinde Pub/Sub'u etkinleştirin.
  • Pub/Sub konusu oluşturun.
  • Mesaj yayınlama

2. Başlamadan önce

6757b2fb50ddcc2d.png

  • Hesabınızın kimliğini doğrulamak ve varsayılan projeyi abap-sdk-poc olarak ayarlamak için aşağıdaki komutları çalıştırın. Örnek olarak us-west4-b bölgesi kullanılmıştır. Gerekirse lütfen aşağıdaki komutlardaki projeyi ve bölgeyi tercihinize göre değiştirin.
gcloud auth login
gcloud config
set project abap-sdk-poc
gcloud config
set compute/zone us-west4-b

3. Genel Bakış

Bu kod laboratuvarının kapsamı, Pub/Sub hizmetinin aşağıdaki bileşenlerini içerir:

  • Yayıncı (üretici olarak da bilinir): Mesajlar oluşturur ve bunları belirli bir konuda mesajlaşma hizmetine gönderir (yayınlar).
  • Mesaj: Mesajlaşma hizmetinde taşınan veriler.
  • Konu: Mesaj feed'ini temsil eden adlandırılmış bir öğedir.

4f5676da8922467f.png

4. Pub/Sub hizmetini ayarlama

  1. Gerekli role sahip bir hizmet hesabı oluşturmak için Cloud Shell terminalinde aşağıdaki komutu çalıştırın:
gcloud iam service-accounts create abap-sdk-pubsub-tester --display-name="Service Account for PubSub"
  1. Pub/Sub API'yi hizmet hesabınızda (abap-sdk-poc) etkinleştirmek için Cloud Shell terminalinde aşağıdaki komutu çalıştırın:
gcloud services enable pubsub.googleapis.com
  1. Konu oluşturabilmek için hizmet hesabına pubsub.topics.create IAM rolünü verin. Cloud Shell terminalinde aşağıdaki komutu çalıştırın:
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. Konuya mesaj yayınlayabilmek için hizmet hesabına pubsub.topics.publish IAM rolünü verin. Cloud Shell terminalinde aşağıdaki komutu çalıştırın:
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. Rollerin eklendiğini doğrulamak için IAM sayfasına gidin. Oluşturduğunuz hizmet hesabı, kendisine atanan rollerle birlikte listelenir.

5. İstemci anahtarını yapılandırma

/GOOG/CLIENT_KEY tablosundaki yapılandırmayı korumak için aşağıdaki adımları uygulayın:

  1. SAP GUI'ye SPRO işlem kodunu girin.
  2. SAP Reference IMG'yi (SAP Referans IMG'si) tıklayın.
  3. Google Cloud için ABAP SDK'sı > Temel Ayarlar > İstemci Anahtarını Yapılandır'ı tıklayın.
  4. Yeni Girişler'i tıklayın.
  5. Aşağıdaki alanlar için değerler girin:

Alan

Açıklama

Google Cloud Anahtar Adı

PUBSUB_DEMO

Google Cloud Hizmet Hesabı Adı

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

Google Cloud Kapsamı

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

Google Cloud Proje Tanımlayıcısı

abap-sdk-poc

Yetkilendirme Sınıfı

/GOOG/CL_AUTH_GOOGLE

Diğer alanları boş bırakın

ec6b6f94bfa85533.png

6. Konu oluşturma

/GOOG/CL_PUBSUB_V1 API stub'ının CREATE_TOPICS yöntemini kullanarak bir konu oluşturursunuz. Yöntemin imzası:

d40fde108ccf2853.png

  1. SAP GUI'de SE38 işlem kodunu girin.
  2. ZPUBSUB_DEMO adlı bir rapor oluşturun.
  3. Açılan pop-up'ta aşağıda gösterildiği gibi ayrıntıları girin ve Kaydet'i tıklayın.

f9cbdabb6ca96fc4.png

  1. Sonraki pop-up'ta Yerel Nesne'yi seçin veya uygun bir paket adı girin.
  2. ABAP Düzenleyici'ye aşağıdaki kodu ekleyin:
" 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. Raporu kaydedip etkinleştirin.
  2. Raporu çalıştırın (F8).

Başarılı bir yürütme işleminde, rapor çıkışını aşağıdaki gibi görürsünüz:

16aa8a4c59d776d9.png

7. Konuda mesaj yayınlama

Konu hazır olduğunda artık verileri göndermeye odaklanabiliriz. Bir sonraki adımda, bu konuda nasıl mesaj yayınlayacağınızı öğrenelim. Mesajlar, /GOOG/CL_PUBSUB_V1 API stub'ının PUBLISH_TOPICS yöntemi kullanılarak konuya yayınlanır.

Yöntemin imzası:

459fe21ce68bd811.png

  1. SAP GUI'de SE38 işlem kodunu girin.
  2. ZPUBSUB_DEMO_PUBLISH adlı bir rapor oluşturun.
  3. Açılan pop-up'ta aşağıda gösterildiği gibi ayrıntıları girin ve Kaydet'i tıklayın.

9a180c4e9a1e139.png

  1. Sonraki pop-up'ta Yerel Nesne'yi seçin veya uygun bir paket adı girin.
  2. ABAP Düzenleyici'ye aşağıdaki kodu ekleyin:
" 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. Raporu kaydedip etkinleştirin.
  2. Raporu çalıştırın (F8).

Başarılı bir yürütme işleminde, rapor çıkışını aşağıdaki gibi görürsünüz:

384125235efc104.png

8. Tebrikler

Tebrikler! Google Cloud için ABAP SDK'sını kullanarak Google Cloud Platform'un Pub/Sub API'sinde başarıyla bir mesaj yayınladınız.

Çeşitli Google Cloud hizmetlerine erişmek için ABAP SDK'sını kullanmayla ilgili öğrenme yolculuğunuza devam etmek üzere aşağıdaki codelab'e geçebilirsiniz.

  • Cloud Pub/Sub'dan etkinlik alma
  • Parçalara ayırarak Cloud Storage paketine dosya yükleme
  • ABAP'den Vertex AI test-bison'u çağırma
  • . . .

9. Temizleme

Google Cloud için ABAP SDK'sıyla ilgili ek kod laboratuvarlarına devam etmek istemiyorsanız lütfen temizleme işlemine devam edin.

Projeyi silme

  • Google Cloud projesini silin:
gcloud projects delete abap-sdk-poc

Kaynakları tek tek silme

  1. Hesaplama örneğini silin:
gcloud compute instances delete abap-trial-docker
  1. Güvenlik duvarı kurallarını silin:
gcloud compute firewall-rules delete sapmachine
  1. Hizmet hesabını silin:
gcloud iam service-accounts delete \
    abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com