Publikowanie zdarzenia w Cloud Pub/Sub za pomocą pakietu SDK ABAP dla Google Cloud

1. Wprowadzenie

W tym laboratorium kodu znajdziesz instrukcje publikowania zdarzenia w interfejsie Google Cloud Pub/Sub API za pomocą pakietu ABAP SDK dla Google Cloud.

W tym samouczku są używane te usługi Google Cloud:

  • Pub/Sub
  • Cloud Shell

Co utworzysz

Dowiesz się:

  • włączyć Pub/Sub w projekcie Google Cloud,
  • utworzyć temat Pub/Sub,
  • publikować wiadomości;

2. Zanim zaczniesz

  • W systemie musisz mieć zainstalowany pakiet ABAP SDK for Google Cloud. Aby skonfigurować nowy system, możesz skorzystać z codelab Install ABAP Trial on Google Cloud Platform (Instalowanie wersji próbnej ABAP w Google Cloud Platform).
  • Użyj Cloud Shell, czyli środowiska wiersza poleceń działającego w Google Cloud. W Cloud Console w prawym górnym rogu kliknij Aktywuj Cloud Shell:

6757b2fb50ddcc2d.png

  • Uruchom te polecenia, aby uwierzytelnić swoje konto i ustawić projekt domyślny jako abap-sdk-poc. W tym przykładzie użyto strefy us-west4-b. W razie potrzeby zmień projekt i strefę w poniższych poleceniach zgodnie ze swoimi preferencjami.
gcloud auth login
gcloud config set project abap-sdk-poc
gcloud config set compute/zone us-west4-b

3. Przegląd

Zakres tego Codelab obejmuje te komponenty usługi Pub/Sub:

  • Nadawca (nazywany też producentem): tworzy wiadomości i wysyła je (publikuje) do usługi przesyłania wiadomości w określonym temacie.
  • Message (wiadomość): dane przesyłane przez usługę przesyłania wiadomości.
  • Temat: nazwany element, który reprezentuje plik danych wiadomości.

4f5676da8922467f.png

4. Konfigurowanie usługi Pub/Sub

  1. Aby utworzyć konto usługi z wymaganą rolą, uruchom w terminalu Cloud Shell to polecenie:
gcloud iam service-accounts create abap-sdk-pubsub-tester --display-name="Service Account for PubSub"
  1. Aby włączyć interfejs API Pub/Sub dla konta usługi (abap-sdk-poc), uruchom w terminalu Cloud Shell to polecenie:
gcloud services enable pubsub.googleapis.com
  1. Aby móc tworzyć tematy, przypisz do konta usługi rolę uprawnień pubsub.topics.create. Uruchom w terminalu Cloud Shell to polecenie:
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. Aby móc publikować wiadomości w danym temacie, przypisz do konta usługi rolę uprawnień pubsub.topics.publish. Uruchom w terminalu Cloud Shell to polecenie:
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. Aby sprawdzić, czy role zostały dodane, otwórz stronę IAM. Utworzone konto usługi powinno być wymienione wraz z przypisanymi do niego rolami.

5. Konfigurowanie klucza klienta

Aby zachować konfigurację w tabeli /GOOG/CLIENT_KEY, wykonaj te czynności:

  1. W interfejsie graficznym SAP wpisz kod transakcji SPRO.
  2. Kliknij SAP Reference IMG (Referencyjny obraz SAP).
  3. Kliknij ABAP SDK for Google Cloud > Basic Settings > Configure Client Key (ABAP SDK for Google Cloud > Ustawienia podstawowe > Skonfiguruj klucz klienta).
  4. Kliknij Nowe wpisy.
  5. Wpisz wartości w tych polach:

Pole

Opis

Nazwa klucza Google Cloud

PUBSUB_DEMO

Nazwa konta usługi Google Cloud

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

Zakres Google Cloud

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

Identyfikator projektu Google Cloud

abap-sdk-poc

Klasa autoryzacji

/GOOG/CL_AUTH_GOOGLE

Pozostałe pola pozostaw puste

ec6b6f94bfa85533.png

6. Tworzenie tematu

Temat tworzysz za pomocą metody CREATE_TOPICS w zasobniku interfejsu API /GOOG/CL_PUBSUB_V1. Podpis metody:

d40fde108ccf2853.png

  1. W interfejsie graficznym SAP wpisz kod transakcji SE38.
  2. Utwórz raport o nazwie ZPUBSUB_DEMO.
  3. W otwartym oknie podaj informacje widoczne poniżej i kliknij Zapisz.

f9cbdabb6ca96fc4.png

  1. W wyskakującym okienku wybierz Obiekt lokalny lub podaj nazwę pakietu.
  2. W edytorze ABAP dodaj ten kod:
" 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. Zapisz i aktywuj raport.
  2. Wykonaj raport (F8).

Po pomyślnym wykonaniu powinieneś zobaczyć dane wyjściowe raportu, jak pokazano poniżej:

16aa8a4c59d776d9.png

7. Publikowanie wiadomości w temacie

Temat jest gotowy, więc możemy teraz skupić się na wysyłaniu danych. W następnym kroku dowiemy się, jak publikować wiadomości na ten temat. Wiadomości są publikowane w temacie za pomocą metody PUBLISH_TOPICS w zablokowanym interfejsie API /GOOG/CL_PUBSUB_V1.

Podpis metody:

459fe21ce68bd811.png

  1. W interfejsie graficznym SAP wpisz kod transakcji SE38.
  2. Utwórz raport o nazwie ZPUBSUB_DEMO_PUBLISH.
  3. W otwartym oknie podaj informacje widoczne poniżej i kliknij Zapisz.

9a180c4e9a1e139.png

  1. W wyskakującym okienku wybierz Obiekt lokalny lub podaj nazwę pakietu.
  2. W edytorze ABAP dodaj ten kod:
" 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. Zapisz i aktywuj raport.
  2. Wykonaj raport (F8).

Po pomyślnym wykonaniu powinieneś zobaczyć dane wyjściowe raportu, jak pokazano poniżej:

384125235efc104.png

8. Gratulacje

Gratulacje! Udało Ci się opublikować wiadomość w interfejsie Pub/Sub API Google Cloud Platform za pomocą pakietu ABAP SDK for Google Cloud.

Aby dowiedzieć się więcej o korzystaniu z pakietu ABAP SDK do uzyskiwania dostępu do różnych usług Google Cloud, możesz teraz przejść do tego ćwiczenia z programowania.

  • Odbieranie zdarzenia z Cloud Pub/Sub
  • Przesyłanie pliku do zasobnika Cloud Storage z podziałem na części
  • Wywoływanie usługi Vertex AI test-bison z ABAP
  • . . .

9. Czyszczenie danych

Jeśli nie chcesz kontynuować dodatkowych samouczków związanych z pakietem ABAP SDK dla Google Cloud, przejdź do czyszczenia.

Usuwanie projektu

  • Usuń projekt Google Cloud:
gcloud projects delete abap-sdk-poc

Usuwanie poszczególnych zasobów

  1. Usuń instancję obliczeniową:
gcloud compute instances delete abap-trial-docker
  1. Usuń reguły zapory sieciowej:
gcloud compute firewall-rules delete sapmachine
  1. Usuń konto usługi:
gcloud iam service-accounts delete \
    abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com