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:
- Uruchom te polecenia, aby uwierzytelnić swoje konto i ustawić projekt domyślny jako
abap-sdk-poc
. W tym przykładzie użyto strefyus-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.
4. Konfigurowanie usługi Pub/Sub
- 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"
- 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
- 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'
- 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'
- 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:
- W interfejsie graficznym SAP wpisz kod transakcji SPRO.
- Kliknij SAP Reference IMG (Referencyjny obraz SAP).
- Kliknij ABAP SDK for Google Cloud > Basic Settings > Configure Client Key (ABAP SDK for Google Cloud > Ustawienia podstawowe > Skonfiguruj klucz klienta).
- Kliknij Nowe wpisy.
- 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
6. Tworzenie tematu
Temat tworzysz za pomocą metody CREATE_TOPICS w zasobniku interfejsu API /GOOG/CL_PUBSUB_V1. Podpis metody:
- W interfejsie graficznym SAP wpisz kod transakcji SE38.
- Utwórz raport o nazwie ZPUBSUB_DEMO.
- W otwartym oknie podaj informacje widoczne poniżej i kliknij Zapisz.
- W wyskakującym okienku wybierz Obiekt lokalny lub podaj nazwę pakietu.
- 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.
- Zapisz i aktywuj raport.
- Wykonaj raport (F8).
Po pomyślnym wykonaniu powinieneś zobaczyć dane wyjściowe raportu, jak pokazano poniżej:
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:
- W interfejsie graficznym SAP wpisz kod transakcji SE38.
- Utwórz raport o nazwie ZPUBSUB_DEMO_PUBLISH.
- W otwartym oknie podaj informacje widoczne poniżej i kliknij Zapisz.
- W wyskakującym okienku wybierz Obiekt lokalny lub podaj nazwę pakietu.
- 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.
- Zapisz i aktywuj raport.
- Wykonaj raport (F8).
Po pomyślnym wykonaniu powinieneś zobaczyć dane wyjściowe raportu, jak pokazano poniżej:
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
- Usuń instancję obliczeniową:
gcloud compute instances delete abap-trial-docker
- Usuń reguły zapory sieciowej:
gcloud compute firewall-rules delete sapmachine
- Usuń konto usługi:
gcloud iam service-accounts delete \
abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com