Publier des messages dans Google Cloud Pub/Sub

Dans ce guide de démarrage rapide, vous allez découvrir comment créer un programme qui publie un message "Hello World!" à un sujet Pub/Sub à l'aide de l'API Pub/Sub via l'édition SAP BTP du SDK ABAP pour Google Cloud.

Avant de commencer

Avant d'exécuter ce guide de démarrage rapide, assurez-vous que vous ou vos administrateurs avez rempli les conditions préalables suivantes :

  • Attribuez au compte de service le rôle IAM roles/pubsub.publisher.

  • Assurez-vous que l'API Pub/Sub est activée dans votre projet Google Cloud.

    Accéder à la bibliothèque d'API

  • Créez un sujet Pub/Sub SAMPLE_TOPIC_01 et ajoutez-y un abonnement pull SAMPLE_SUB_TOPIC_01. Pour en savoir plus, consultez les sections Créer un sujet et Créer un abonnement.

Créer une classe ABAP pour publier des messages dans un sujet Pub/Sub

  1. Créer un package :

    1. Dans ADT, accédez à l'explorateur de projets.
    2. Effectuez un clic droit sur le package ZLOCAL, puis sélectionnez Nouveau > Package ABAP.
    3. Saisissez les informations suivantes pour votre package :

      • Nom : saisissez ZABAPSDK_TEST.
      • Description : saisissez ABAP SDK Test Package.
    4. Cliquez sur Suivant.

    5. Dans la boîte de dialogue Sélectionner une requête de transport, cochez la case Créer une requête.

    6. Saisissez une description pour la requête de transport.

    7. Cliquez sur Terminer.

  2. Créez une classe ABAP pour appeler l'API Pub/Sub:

    1. Effectuez un clic droit sur votre package ABAP, puis sélectionnez Nouveau > Classe ABAP.
    2. Saisissez les informations suivantes pour votre classe ABAP :

      • Nom : saisissez ZGOOG_CL_QS_PUBSUB.
      • Description : saisissez Quick start for Pub/Sub API.
    3. Cliquez sur Suivant.

    4. Sélectionnez une demande de transport, puis cliquez sur Terminer.

  3. Dans l'éditeur de code, remplacez le code par défaut par l'extrait de code suivant :

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

    Remplacez DEMO_PUBSUB par le nom de la clé client.

  4. Enregistrez et activez les modifications.

  5. Exécuter votre application :

    1. Sélectionnez la classe ABAP ZGOOG_CL_QS_PUBSUB.
    2. Cliquez sur Exécuter > Exécuter en tant que > Application ABAP (console). Vous pouvez également appuyer sur F9.
  6. Pour valider les résultats, procédez comme suit :

    1. Dans la console Google Cloud, accédez à Pub/Sub.

    2. Sélectionnez l'abonnement SAMPLE_SUB_TOPIC_01, puis accédez à l'onglet Messages.

    3. Utilisez la fonctionnalité PULL pour vérifier si le message "Hello World!" a été publié dans le sujet.

Étapes suivantes