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 veröffentlicht.

Hinweis

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

  • Die Authentifizierung für den Zugriff auf Google Cloud APIs ist eingerichtet. Authentifizierung einrichten.

  • 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.

Programm zum Veröffentlichen von Nachrichten in Google Cloud erstellen

  1. Erstellen Sie im SAP-System ein ausführbares Programm in Ihrem benutzerdefinierten Namespace (z. B. Z oder Y) mit der Transaktion SE38.

    1. Geben Sie in der SAP-GUI den Transaktionscode SE38 ein.

    2. Geben Sie im Feld Programm einen Namen für Ihr Programm ein, z. B. ZDEMO_PUBSUB.

    3. Klicken Sie auf Erstellen.

    4. Geben Sie die Programmattribute an:

      1. Geben Sie im Feld Titel den Titel Ihres Programms ein, z. B. Publish messages to a Pub/Sub topic.

      2. Wählen Sie im Feld Typ die Option Executable Program aus.

      3. Klicken Sie auf Speichern.

    5. Speichern Sie das Programm als lokales Objekt.

    6. Fügen Sie im ABAP-Editor folgenden Code ein:

      **********************************************************************
      *  Copyright 2023 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.                                *
      **********************************************************************
      
      REPORT zr_qs_publish_messages.
      
      * Data Declaration
      DATA:
        lv_p_projects_id TYPE string,
        lv_p_topics_id   TYPE string,
        ls_input         TYPE /goog/cl_pubsub_v1=>ty_023.
      
      TRY.
      * Instantiate the client stub
          DATA(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
          CALL METHOD 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 ).
            MESSAGE 'Message was published!' TYPE 'S'.
          ELSE.
            MESSAGE 'Message was not published!' TYPE 'E'.
          ENDIF.
      
      * Close the HTTP Connection
          lo_pubsub->close( ).
      
        CATCH /goog/cx_sdk INTO DATA(lo_exception).
          MESSAGE lo_exception->get_text( ) TYPE 'E'.
      ENDTRY.
      

      Ersetzen Sie DEMO_PUBSUB durch den Namen des Clientschlüssels.

  2. Führen Sie die Anwendung in SE38 aus.

  3. 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