Publier un événement sur Cloud Pub/Sub à l'aide du SDK ABAP pour Google Cloud

1. Introduction

Dans cet atelier de programmation, nous avons listé les étapes à suivre pour publier un événement dans l'API Google Cloud Pub/Sub à l'aide du SDK ABAP pour Google Cloud.

Les services Google Cloud suivants sont utilisés dans cet atelier de programmation:

  • Pub/Sub
  • Cloud Shell

Ce que vous allez faire

Vous allez apprendre les points suivants:

  • Activer Pub/Sub dans un projet Google Cloud
  • Créer un sujet Pub/Sub
  • Publier des messages.

2. Avant de commencer

6757b2fb50ddcc2d.png

  • Exécutez les commandes suivantes pour vous authentifier pour votre compte et définir le projet par défaut sur abap-sdk-poc. La zone us-west4-b est utilisée comme exemple. Si nécessaire, veuillez modifier le projet et la zone dans les commandes suivantes en fonction de vos préférences.
gcloud auth login
gcloud config set project abap-sdk-poc
gcloud config set compute/zone us-west4-b

3. Présentation

Cet atelier de programmation concerne les composants suivants d'un service Pub/Sub:

  • Éditeur (également appelé "producteur"): crée des messages et les envoie (publie) au service de messagerie sur un sujet spécifié.
  • Message: données transmises via le service de messagerie.
  • Sujet: entité nommée qui représente un flux de messages.

4f5676da8922467f.png

4. Configurer le service Pub/Sub

  1. Pour créer un compte de service avec le rôle requis, exécutez la commande suivante dans le terminal Cloud Shell:
gcloud iam service-accounts create abap-sdk-pubsub-tester --display-name="Service Account for PubSub"
  1. Pour activer l'API Pub/Sub dans votre compte de service (abap-sdk-poc), exécutez la commande suivante dans le terminal Cloud Shell:
gcloud services enable pubsub.googleapis.com
  1. Attribuez le rôle IAM pubsub.topics.create au compte de service pour pouvoir créer un sujet. Exécutez la commande suivante dans le terminal Cloud Shell:
gcloud endpoints services add-iam-policy-binding pubsub.googleapis.com \ --member='serviceAccount:abap-sdk-pubusb-tester@abap-sdk-poc.iam.gserviceaccount.com' \
--role='roles/roles/pubsub.topics.create'
  1. Attribuez le rôle IAM pubsub.topics.publish au compte de service pour qu'il puisse publier un message dans le sujet. Exécutez la commande suivante dans le terminal Cloud Shell:
gcloud endpoints services add-iam-policy-binding pubsub.googleapis.com \ --member='serviceAccount:abap-sdk-pubusb-tester@abap-sdk-poc.iam.gserviceaccount.com' \
--role='roles/roles/pubsub.topics.publish'
  1. Pour vérifier que les rôles ont été ajoutés, accédez à la page IAM. Le compte de service que vous avez créé doit être listé avec les rôles qui lui ont été attribués.

5. Configurer la clé client

Pour gérer la configuration dans la table /GOOG/CLIENT_KEY, procédez comme suit:

  1. Dans l'IUG de SAP, saisissez le code de transaction SPRO.
  2. Cliquez sur SAP Reference IMG.
  3. Cliquez sur SDK ABAP pour Google Cloud > Paramètres de base > Configurer la clé client.
  4. Cliquez sur Nouvelles entrées.
  5. Renseignez les champs suivants :

Champ

Description

Nom de la clé Google Cloud

PUBSUB_DEMO

Nom du compte de service Google Cloud

abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com

Champ d'application Google Cloud

https://www.googleapis.com/auth/cloud-platform

Identifiant de projet Google Cloud

abap-sdk-poc

Classe d'autorisation

/GOOG/CL_AUTH_GOOGLE

Laissez les autres champs vides.

ec6b6f94bfa85533.png

6. Créer un sujet

Vous créez un sujet à l'aide de la méthode CREATE_TOPICS du bouchon d'API /GOOG/CL_PUBSUB_V1. Signature de la méthode:

d40fde108ccf2853.png

  1. Dans l'IUG de SAP, saisissez le code de transaction SE38.
  2. Créez un rapport intitulé ZPUBSUB_DEMO.
  3. Dans le pop-up qui s'affiche, fournissez les informations indiquées ci-dessous, puis cliquez sur Enregistrer.

f9cbdabb6ca96fc4.png

  1. Dans la fenêtre pop-up suivante, sélectionnez Objet local ou indiquez un nom de package, le cas échéant.
  2. Dans l'éditeur ABAP, ajoutez le code suivant:
" Data Declaration
DATA:
  lo_client        TYPE REF TO /goog/cl_pubsub_v1.

TRY.
    " Open HTTP Connection
    CREATE OBJECT lo_client EXPORTING iv_key_name = 'PUBSUB_DEMO'.

    " Populate relevant parameters
    DATA(lv_p_projects_id) = CONV string( lo_client->gv_project_id ).
    DATA(lv_p_topics_id) = CONV string( 'PUBSUB_DEMO_TOPIC' ).

    " Call API method pubsub.topics.create
    lo_client->create_topics(
      EXPORTING
        iv_p_projects_id = lv_p_projects_id
        iv_p_topics_id   = lv_p_topics_id
      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) ).

    IF lo_client->is_success( lv_ret_code ) = abap_true.
      DATA(lv_msg) = 'Topic ' && ':' && lv_p_topics_id && ' was created!'.
      MESSAGE lv_msg TYPE 'I' .
    ELSE.
      MESSAGE lv_err_text TYPE 'E'.
    ENDIF.

    " Close HTTP Connection
    lo_client->close( ).

  CATCH /goog/cx_sdk INTO DATA(lo_exception).
    MESSAGE lo_exception->get_text( ) TYPE 'E'.
    RETURN.
ENDTRY.
  1. Enregistrez et activez le rapport.
  2. Exécutez le rapport (F8).

Si l'exécution réussit, le résultat du rapport s'affiche comme suit:

16aa8a4c59d776d9.png

7. Publier un message dans le sujet

Maintenant que le sujet est prêt, nous pouvons nous concentrer sur l'envoi de données. À l'étape suivante, voyons comment publier des messages sur ce sujet. Les messages sont publiés sur le sujet à l'aide de la méthode PUBLISH_TOPICS du bouchon d'API /GOOG/CL_PUBSUB_V1.

Signature de la méthode:

459fe21ce68bd811.png

  1. Dans l'IUG de SAP, saisissez le code de transaction SE38.
  2. Créez un rapport intitulé ZPUBSUB_DEMO_PUBLISH.
  3. Dans le pop-up qui s'affiche, fournissez les informations indiquées ci-dessous, puis cliquez sur Enregistrer.

9a180c4e9a1e139.png

  1. Dans la fenêtre pop-up suivante, sélectionnez Objet local ou indiquez un nom de package, le cas échéant.
  2. Dans l'éditeur ABAP, ajoutez le code suivant:
" Data Declaration
DATA:
  lo_client        TYPE REF TO /goog/cl_pubsub_v1,
  ls_message       TYPE /goog/cl_pubsub_v1=>ty_025,
  ls_input         TYPE /goog/cl_pubsub_v1=>ty_023.

TRY.
    " Open HTTP Connection
    CREATE OBJECT lo_client EXPORTING iv_key_name = 'PUBSUB_DEMO'.

    " Populate relevant parameters
    DATA(lv_p_projects_id) = CONV string( lo_client->gv_project_id ).
    DATA(lv_p_topics_id) = CONV string( 'PUBSUB_DEMO_TOPIC' ).

    ls_message-data = cl_http_utility=>encode_base64( unencoded = ' This message was published to topic' ).
    APPEND ls_message TO ls_input-messages.

    " Call API method : pubsub.topics.publish
    " This method publishes the message(encoded in base64 format to the topic )
    lo_client->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)  ).

    IF lo_client->is_success( lv_ret_code ) = abap_true.
       DATA(lv_msg) = 'Message was published to topic '  && ': ' &&         lv_p_topics_id.
      MESSAGE lv_msg TYPE 'I' DISPLAY LIKE 'S'.

    ELSE.
      MESSAGE lv_err_text TYPE 'E'.
    ENDIF.

    " Close HTTP Connection
    lo_client->close( ).

  CATCH /goog/cx_sdk INTO DATA(lo_exception).
    MESSAGE lv_err_text TYPE 'E'.
    RETURN.
ENDTRY.
  1. Enregistrez et activez le rapport.
  2. Exécutez le rapport (F8).

Si l'exécution réussit, le résultat du rapport s'affiche comme suit:

384125235efc104.png

8. Félicitations

Félicitations ! Vous avez publié un message dans l'API Pub/Sub de Google Cloud Platform à l'aide du SDK ABAP pour Google Cloud.

Vous pouvez maintenant suivre l'atelier de programmation ci-dessous pour continuer à apprendre à utiliser le SDK ABAP pour accéder à divers services Google Cloud.

  • Recevoir un événement à partir de Cloud Pub/Sub
  • Importer un fichier dans un bucket Cloud Storage avec le fractionnement
  • Appeler Vertex AI test-bison à partir d'ABAP
  • . . .

9. Effectuer un nettoyage

Si vous ne souhaitez pas poursuivre les ateliers de programmation supplémentaires liés au SDK ABAP pour Google Cloud, veuillez procéder au nettoyage.

Supprimer le projet

  • Supprimez le projet Google Cloud:
gcloud projects delete abap-sdk-poc

Supprimer des ressources individuelles

  1. Supprimez l'instance de calcul:
gcloud compute instances delete abap-trial-docker
  1. Supprimez les règles de pare-feu :
gcloud compute firewall-rules delete sapmachine
  1. Supprimez le compte de service :
gcloud iam service-accounts delete \
    abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com