Publicar mensagens no Google Cloud Pub/Sub

Neste guia de início rápido, mostramos como criar um programa que publica uma mensagem "Hello World!" para um tópico do Pub/Sub usando a API Pub/Sub por meio da edição SAP BTP do ABAP SDK for Google Cloud.

Antes de começar

Antes de executar este guia de início rápido, verifique se você ou seus administradores concluíram os seguintes pré-requisitos:

  • Conceda o papel do IAM roles/pubsub.publisher à conta de serviço.

  • Verifique se a API Pub/Sub está ativada no seu projeto do Google Cloud.

    Acessar a biblioteca de APIs

  • Crie um tópico do Pub/Sub SAMPLE_TOPIC_01 e adicione a ele uma assinatura de pull SAMPLE_SUB_TOPIC_01. Para mais informações, consulte Criar um tópico e Criar uma assinatura.

Criar uma classe ABAP para publicar mensagens em um tópico do Pub/Sub

  1. Criar um pacote:

    1. No ADT, acesse o Project Explorer.
    2. Clique com o botão direito do mouse no pacote ZLOCAL e selecione New > ABAP Package.
    3. Insira os seguintes detalhes do pacote:

      • Nome: insira ZABAPSDK_TEST.
      • Descrição: insira ABAP SDK Test Package.
    4. Clique em Próxima.

    5. Na caixa de diálogo Selecione uma solicitação de transporte, marque a caixa de seleção Criar uma nova solicitação.

    6. Insira uma descrição para a solicitação de transporte.

    7. Clique em Finish.

  2. Crie uma classe ABAP para chamar a API Pub/Sub:

    1. Clique com o botão direito do mouse no pacote ABAP e selecione Nova > Classe ABAP.
    2. Digite os seguintes detalhes da sua classe ABAP:

      • Nome: insira ZGOOG_CL_QS_PUBSUB.
      • Descrição: insira Quick start for Pub/Sub API.
    3. Clique em Próxima.

    4. Selecione uma solicitação de transporte e clique em Concluir.

  3. No editor de código, substitua o código padrão pelo seguinte snippet 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
            " 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.
    

    Substitua DEMO_PUBSUB pelo nome da chave do cliente.

  4. Salve e ative as alterações.

  5. Execute o aplicativo:

    1. Selecione a classe ABAP ZGOOG_CL_QS_PUBSUB.
    2. Clique em Run > Run As > ABAP Application (Console). Ou pressione F9.
  6. Para validar os resultados, siga estas etapas:

    1. No console do Google Cloud, acesse o Pub/Sub.

    2. Selecione a assinatura SAMPLE_SUB_TOPIC_01 e acesse a guia Mensagens.

    3. Use o recurso PULL para verificar se a mensagem "Hello World!" foi publicada no tópico.

A seguir