Pubblicare messaggi in Google Cloud Pub/Sub

Questa guida rapida mostra come creare un programma che pubblichi un messaggio "Hello World!" in un argomento Pub/Sub utilizzando l'API Pub/Sub tramite l'edizione SAP BTP dell'SDK ABAP per Google Cloud.

Prima di iniziare

Prima di eseguire questa guida rapida, assicurati che tu o i tuoi amministratori abbiate completato i seguenti prerequisiti:

  • Concedi all'account di servizio il ruolo IAM roles/pubsub.publisher.

  • Assicurati che l'API Pub/Sub sia abilitata nel tuo progetto Google Cloud.

    Vai alla libreria API

  • Crea un argomento Pub/Sub SAMPLE_TOPIC_01 e aggiungi una sottoscrizione pull SAMPLE_SUB_TOPIC_01 allo stesso. Per ulteriori informazioni, vedi Creare un argomento e Creare una sottoscrizione.

Creare una classe ABAP per pubblicare messaggi in un argomento Pub/Sub

  1. Crea un pacchetto:

    1. In ADT, vai a Esplora progetti.
    2. Fai clic con il tasto destro del mouse sul pacchetto ZLOCAL e seleziona Nuovo > Pacchetto ABAP.
    3. Inserisci i seguenti dettagli per il pacchetto:

      • Nome: inserisci ZABAPSDK_TEST.
      • Descrizione: inserisci ABAP SDK Test Package.
    4. Fai clic su Avanti.

    5. Nella finestra di dialogo Seleziona una richiesta di trasporto, seleziona la casella di controllo Crea una nuova richiesta.

    6. Inserisci una descrizione per la richiesta di trasporto.

    7. Fai clic su Fine.

  2. Crea una classe ABAP per chiamare l'API Pub/Sub:

    1. Fai clic con il tasto destro del mouse sul pacchetto ABAP e seleziona Nuovo > Classe ABAP.
    2. Inserisci i seguenti dettagli per il tuo corso ABAP:

      • Nome: inserisci ZGOOG_CL_QS_PUBSUB.
      • Descrizione: inserisci Quick start for Pub/Sub API.
    3. Fai clic su Avanti.

    4. Seleziona una richiesta di trasporto e fai clic su Fine.

  3. Nell'editor di codice, sostituisci il codice predefinito con il seguente snippet di codice:

    " --------------------------------------------------------------------
    "  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
            " The client key DEMO_PUBSUB is an example, replace this with actual value
            lo_pubsub = NEW /goog/cl_pubsub_v1( iv_key_name = 'DEMO_PUBSUB' ).
    
            " Pass the relevant input parameters
            " The value shown below is an example. Replace it with actual value
            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).
            " Handle exception here
        ENDTRY.
      ENDMETHOD.
    ENDCLASS.
    

    Sostituisci DEMO_PUBSUB con il nome della chiave client.

  4. Salva e attiva le modifiche.

  5. Esegui l'applicazione:

    1. Seleziona la classe ABAP ZGOOG_CL_QS_PUBSUB.
    2. Fai clic su Esegui > Esegui come > Applicazione ABAP (console). In alternativa, premi F9.
  6. Per convalidare i risultati:

    1. Nella console Google Cloud, vai a Pub/Sub.

    2. Seleziona l'abbonamento SAMPLE_SUB_TOPIC_01 e vai alla scheda Messaggi.

    3. Utilizza la funzionalità PULL per verificare se il messaggio "Hello World!" è stato pubblicato nell'argomento.

Passaggi successivi