Nachrichten in Google Cloud Pub/Sub veröffentlichen

In dieser Kurzanleitung erfahren Sie, wie Sie ein Programm erstellen, das eine "Hello World!" Nachricht an ein Pub/Sub-Thema mithilfe der Pub/Sub API über die SAP BTP-Edition des ABAP SDK for Google Cloud sendet.

Hinweise

Bevor Sie diese Kurzanleitung ausführen, müssen Sie oder Ihre Administratoren die folgenden Voraussetzungen erfüllt haben:

  • Gewähren Sie dem Dienstkonto die IAM-Rolle roles/pubsub.publisher.

  • Achten Sie darauf, dass die Pub/Sub API in Ihrem Google Cloud-Projekt aktiviert ist.

    Zur API-Bibliothek

  • Erstellen Sie ein Pub/Sub-Thema SAMPLE_TOPIC_01 und fügen Sie demselben ein Pull-Abo SAMPLE_SUB_TOPIC_01 hinzu. Weitere Informationen finden Sie unter Thema erstellen und Abo erstellen.

ABAP-Klasse erstellen, um Nachrichten in einem Pub/Sub-Thema zu veröffentlichen

  1. Paket erstellen:

    1. Rufen Sie in ADT den Project Explorer auf.
    2. Klicken Sie mit der rechten Maustaste auf das Paket ZLOCAL und wählen Sie Neu > ABAP-Paket aus.
    3. Geben Sie die folgenden Details für das Paket ein:

      • Name: Geben Sie ZABAPSDK_TEST ein.
      • Beschreibung: Geben Sie ABAP SDK Test Package ein.
    4. Klicken Sie auf Next (Weiter).

    5. Klicken Sie im Dialogfeld Transportanfrage auswählen das Kästchen Neue Anfrage erstellen an.

    6. Geben Sie eine Beschreibung für die Transportanfrage ein.

    7. Klicken Sie auf Finish (Beenden).

  2. Erstellen Sie eine ABAP-Klasse, um die Pub/Sub API aufzurufen:

    1. Klicken Sie mit der rechten Maustaste auf Ihr ABAP-Paket und wählen Sie Neu > ABAP-Klasse aus.
    2. Geben Sie die folgenden Details für Ihre ABAP-Klasse ein:

      • Name: Geben Sie ZGOOG_CL_QS_PUBSUB ein.
      • Beschreibung: Geben Sie Quick start for Pub/Sub API ein.
    3. Klicken Sie auf Next (Weiter).

    4. Wählen Sie eine Transportanfrage aus und klicken Sie auf Fertigstellen.

  3. Ersetzen Sie im Code-Editor den Standardcode durch das folgende Code-Snippet:

    " --------------------------------------------------------------------
    "  Copyright 2024 Google LLC                                         -
    "                                                                    -
    "  Licensed under the Apache License, Version 2.0 (the "License");   -
    "  you may not use this file except in compliance with the License.  -
    "  You may obtain a copy of the License at                           -
    "      https://www.apache.org/licenses/LICENSE-2.0                   -
    "  Unless required by applicable law or agreed to in writing,        -
    "  software distributed under the License is distributed on an       -
    "  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,      -
    "  either express or implied.                                        -
    "  See the License for the specific language governing permissions   -
    "  and limitations under the License.                                -
    " --------------------------------------------------------------------
    CLASS zcl_qs_publish_messages DEFINITION
      PUBLIC FINAL
      CREATE PUBLIC.
    
      PUBLIC SECTION.
        INTERFACES if_oo_adt_classrun.
    ENDCLASS.
    
    
    CLASS zcl_qs_publish_messages IMPLEMENTATION.
      METHOD if_oo_adt_classrun~main.
    
        DATA ls_input         TYPE /goog/cl_pubsub_v1=>ty_023.
        DATA lo_pubsub        TYPE REF TO /goog/cl_pubsub_v1.
        DATA lv_p_projects_id TYPE string.
        DATA lv_p_topics_id   TYPE string.
    
        TRY.
            " Open HTTP connection
            lo_pubsub = NEW /goog/cl_pubsub_v1( iv_key_name = 'DEMO_PUBSUB' ).
    
            " Pass the relevant input parameters
            lv_p_topics_id = 'SAMPLE_TOPIC_01'.
            lv_p_projects_id = lo_pubsub->gv_project_id.
            APPEND VALUE #( data = cl_http_utility=>encode_base64( 'Hello World!' ) )
                   TO ls_input-messages.
    
            " Call the API
            lo_pubsub->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) ).
    
            " Handle the output
            IF lo_pubsub->is_success( lv_ret_code ).
              out->write( 'Message was published!' ).
            ELSE.
              out->write( 'Message was not published!' ).
            ENDIF.
    
            " Close the HTTP Connection
            lo_pubsub->close( ).
    
          CATCH /goog/cx_sdk INTO DATA(lo_exception).
            MESSAGE lo_exception->get_text( ) TYPE 'E'.
        ENDTRY.
      ENDMETHOD.
    ENDCLASS.
    

    Ersetzen Sie DEMO_PUBSUB durch den Namen des Clientschlüssels.

  4. Speichern und aktivieren Sie die Änderungen.

  5. Führen Sie Ihre Anwendung aus:

    1. Wählen Sie die ABAP-Klasse ZGOOG_CL_QS_PUBSUB aus.
    2. Klicken Sie auf Ausführen > Ausführen als > ABAP-Anwendung (Console). Alternativ können Sie F9 drücken.
  6. So prüfen Sie die Ergebnisse:

    1. Rufen Sie in der Google Cloud Console Pub/Sub auf.

    2. Wählen Sie das Abo SAMPLE_SUB_TOPIC_01 aus und wechseln Sie zum Tab Nachrichten.

    3. Mit der PULL-Funktion können Sie prüfen, ob die Nachricht „Hello World!“ in diesem Thema veröffentlicht wurde.

Nächste Schritte