Publica mensajes en Google Cloud Pub/Sub

En esta guía de inicio rápido, se muestra cómo crear un programa que publique un mensaje “Hello World!” en un tema de Pub/Sub mediante la API de Pub/Sub a través de la edición SAP BTP del SDK de ABAP para Google Cloud.

Antes de comenzar

Antes de ejecutar esta guía de inicio rápido, asegúrate de que tú o tus administradores hayan completado los siguientes requisitos previos:

  • Otorga a la cuenta de servicio el rol de IAM roles/pubsub.publisher.

  • Asegúrate de que la API de Pub/Sub esté habilitada en tu proyecto de Google Cloud.

    Ir a la biblioteca de API

  • Crea un tema de Pub/Sub SAMPLE_TOPIC_01 y agrega una suscripción de extracción SAMPLE_SUB_TOPIC_01 al mismo. Para obtener más información, consulta Crea un tema y Crea una suscripción.

Crea una clase ABAP para publicar mensajes en un tema de Pub/Sub

  1. Crea un paquete:

    1. En ADT, ve al Explorador de proyectos.
    2. Haz clic con el botón derecho en el paquete ZLOCAL y selecciona Nuevo > Paquete de ABAP.
    3. Ingresa los siguientes detalles para tu paquete:

      • Nombre: Ingresa ZABAPSDK_TEST.
      • Descripción: ingresa ABAP SDK Test Package.
    4. Haz clic en Siguiente.

    5. En el cuadro de diálogo Seleccionar una solicitud de transporte, selecciona la casilla de verificación Crear una solicitud nueva.

    6. Ingresa una descripción para la solicitud de transporte.

    7. Haz clic en Finish (Finalizar).

  2. Crea una clase ABAP para llamar a la API de Pub/Sub:

    1. Haz clic con el botón derecho en tu paquete ABAP y selecciona Nueva > Clase ABAP.
    2. Ingresa los siguientes detalles para tu clase ABAP:

      • Nombre: Ingresa ZGOOG_CL_QS_PUBSUB.
      • Descripción: ingresa Quick start for Pub/Sub API.
    3. Haz clic en Siguiente.

    4. Selecciona una solicitud de transporte y haz clic en Finalizar.

  3. En el editor de código, reemplace el código predeterminado por el siguiente fragmento de código:

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

    Reemplaza DEMO_PUBSUB por el nombre de la clave de cliente.

  4. Guarda y activa los cambios.

  5. Ejecuta tu aplicación:

    1. Selecciona la clase de ABAP ZGOOG_CL_QS_PUBSUB.
    2. Haz clic en Run > Run As > ABAP Application (Console). También puedes presionar F9.
  6. Para validar los resultados, sigue estos pasos:

    1. En la consola de Google Cloud, ve a Pub/Sub.

    2. Selecciona la suscripción SAMPLE_SUB_TOPIC_01 y ve a la pestaña Mensajes.

    3. Usa la función PULL para verificar si el mensaje "Hello World!" se publicó en el tema.

¿Qué sigue?