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

1. Giriş

Bu codelab'de, Google Cloud için ABAP SDK'sını kullanarak Google Cloud Pub/Sub API'ye etkinlik yayınlama adımları listelenmiştir.

Bu codelab'de aşağıdaki Google Cloud hizmetleri kullanılmaktadır:

  • Pub/Sub
  • Cloud Shell

Ne oluşturacaksınız?

Öğrenecekleriniz:

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

2. Başlamadan önce

  • Sisteminize Google Cloud için ABAP SDK'yı yüklemiş olmanız gerekir. Yeni bir sistem kurmak için Install ABAP Trial on Google Cloud Platform (Google Cloud Platform'da ABAP Deneme Sürümünü Yükleme) adlı codelab'e başvurabilirsiniz.
  • Google Cloud'da çalışan bir komut satırı ortamı olan Cloud Shell'i kullanıyorsanız. Cloud Console'da sağ üst köşedeki Cloud Shell'i Etkinleştir'i tıklayın:

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 komutlarda 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ı, bir Pub/Sub hizmetinin aşağıdaki bileşenlerini içerir:

  • Yayıncı (üretici olarak da adlandırılır): Belirli bir konuyla ilgili mesajlar oluşturur ve bunları mesajlaşma hizmetine gönderir (yayınlar).
  • Mesaj: Mesajlaşma hizmeti üzerinden taşınan veriler.
  • Konu: Mesaj feed'ini temsil eden adlandırılmış bir öğe.

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 atanmış rollerle birlikte listelenmelidir.

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'de SPRO işlem kodunu girin.
  2. SAP Reference IMG'yi (SAP Referans IMG) 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ğerleri 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

API saplaması /GOOG/CL_PUBSUB_V1'in 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ğıdaki gibi ayrıntıları girin ve Kaydet'i tıklayın.

f9cbdabb6ca96fc4.png

  1. Sonraki pop-up pencerede Yerel Nesne'yi seçin veya uygun bir paket adı girin.
  2. ABAP düzenleyicide 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ütmenin ardından rapor çıkışını aşağıdaki gibi görmeniz gerekir:

16aa8a4c59d776d9.png

7. Konuda mesaj yayınlama

Konu hazır olduğuna göre artık verileri göndermeye odaklanabiliriz. Bir sonraki adımda, bu konuda nasıl mesaj yayınlayacağımızı öğrenelim. Mesajlar, /GOOG/CL_PUBSUB_V1 API saplaması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ğıdaki gibi ayrıntıları girin ve Kaydet'i tıklayın.

9a180c4e9a1e139.png

  1. Sonraki pop-up pencerede Yerel Nesne'yi seçin veya uygun bir paket adı girin.
  2. ABAP düzenleyicide 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ütmenin ardından rapor çıkışını aşağıdaki gibi görmeniz gerekir:

384125235efc104.png

8. Tebrikler

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

Artık ABAP SDK'yı kullanarak çeşitli Google Cloud hizmetlerine erişme konusundaki öğrenme yolculuğunuza devam etmek için aşağıdaki codelab'i uygulayabilirsiniz.

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

9. Temizleme

Google Cloud için ABAP SDK ile ilgili ek codelab'lere devam etmek istemiyorsanız lütfen temizleme işlemine geçin.

Projeyi silme

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

Belirli kaynakları silme

  1. Compute ö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