Xuất bản một sự kiện lên Cloud Pub/Sub bằng cách sử dụng SDK ABAP cho Google Cloud

1. Giới thiệu

Trong lớp học lập trình này, chúng tôi đã liệt kê các bước để phát hành một sự kiện đến API Google Cloud Pub/Sub bằng SDK ABAP cho Google Cloud.

Các dịch vụ sau đây của Google Cloud được sử dụng trong lớp học lập trình này:

  • Pub/Sub
  • Cloud Shell

Sản phẩm bạn sẽ tạo ra

Bạn sẽ tìm hiểu những nội dung sau:

  • Bật Pub/Sub trong một dự án Google Cloud.
  • Tạo chủ đề Pub/Sub.
  • Xuất bản thông báo.

2. Trước khi bắt đầu

6757b2fb50ddcc2d.png

  • Chạy các lệnh sau để xác thực cho tài khoản của bạn và đặt dự án mặc định thành abap-sdk-poc. Ví dụ: vùng us-west4-b. Nếu cần, vui lòng thay đổi dự án và vùng trong các lệnh sau đây theo lựa chọn ưu tiên của bạn.
gcloud auth login
gcloud config set project abap-sdk-poc
gcloud config set compute/zone us-west4-b

3. Tổng quan

Phạm vi của lớp học lập trình này liên quan đến các thành phần sau của dịch vụ Pub/Sub:

  • Trình xuất bản (còn gọi là trình tạo): tạo tin nhắn và gửi (xuất bản) tin nhắn đó đến dịch vụ nhắn tin theo chủ đề đã chỉ định.
  • Thông báo: dữ liệu di chuyển qua dịch vụ nhắn tin.
  • Chủ đề: một thực thể được đặt tên đại diện cho một nguồn cấp dữ liệu tin nhắn.

4f5676da8922467f.png

4. Thiết lập dịch vụ Pub/Sub

  1. Để tạo tài khoản dịch vụ có vai trò bắt buộc, hãy chạy lệnh sau trong cửa sổ dòng lệnh Cloud Shell:
gcloud iam service-accounts create abap-sdk-pubsub-tester --display-name="Service Account for PubSub"
  1. Để bật API Pub/Sub cho tài khoản dịch vụ (abap-sdk-poc), hãy chạy lệnh sau trong thiết bị đầu cuối Cloud Shell:
gcloud services enable pubsub.googleapis.com
  1. Cấp vai trò IAM pubsub.topics.create cho tài khoản dịch vụ để có thể tạo chủ đề. Chạy lệnh sau trong dòng lệnh của màn hình shell trên đám mây:
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. Cấp vai trò IAM pubsub.topics.publish cho tài khoản dịch vụ để có thể phát hành tin nhắn cho chủ đề. Chạy lệnh sau trong dòng lệnh của màn hình shell trên đám mây:
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. Để xác minh rằng bạn đã thêm các vai trò, hãy chuyển đến trang IAM. Tài khoản dịch vụ mà bạn đã tạo sẽ xuất hiện trong danh sách cùng với các vai trò đã được chỉ định cho tài khoản đó.

5. Định cấu hình khoá ứng dụng

Để duy trì cấu hình trong bảng /GOOG/CLIENT_KEY, hãy thực hiện các bước sau:

  1. Trong SAP GUI, hãy nhập mã giao dịch SPRO.
  2. Nhấp vào SAP Reference IMG (Hình ảnh tham chiếu SAP).
  3. Nhấp vào ABAP SDK for Google Cloud (SDK ABAP cho Google Cloud) > Basic Settings (Cài đặt cơ bản) > Configure Client Key (Định cấu hình khoá ứng dụng).
  4. Nhấp vào Mục mới.
  5. Nhập giá trị cho các trường sau:

Trường

Nội dung mô tả

Tên khoá Google Cloud

PUBSUB_DEMO

Tên tài khoản dịch vụ Google Cloud

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

Phạm vi Google Cloud

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

Giá trị nhận dạng dự án trên Google Cloud

abap-sdk-poc

Lớp uỷ quyền

/GOOG/CL_AUTH_GOOGLE

Để trống các trường khác

ec6b6f94bfa85533.png

6. Tạo một chủ đề

Bạn tạo một chủ đề bằng phương thức CREATE_TOPICS của mô-đun API /GOOG/CL_PUBSUB_V1. Chữ ký của phương thức:

d40fde108ccf2853.png

  1. Trong giao diện người dùng SAP, hãy nhập mã giao dịch SE38.
  2. Tạo một báo cáo có tên ZPUBSUB_DEMO.
  3. Trong cửa sổ bật lên, hãy cung cấp thông tin chi tiết như bên dưới rồi nhấp vào Lưu.

f9cbdabb6ca96fc4.png

  1. Trong cửa sổ bật lên tiếp theo, hãy chọn Local Object (Đối tượng cục bộ) hoặc cung cấp tên gói phù hợp.
  2. Trong Trình chỉnh sửa ABAP, hãy thêm mã sau:
" 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. Lưu và kích hoạt báo cáo.
  2. Thực thi báo cáo (F8).

Khi thực thi thành công, bạn sẽ thấy kết quả báo cáo như dưới đây:

16aa8a4c59d776d9.png

7. Xuất bản thông báo cho chủ đề

Khi chủ đề đã sẵn sàng, chúng ta có thể tập trung vào việc gửi dữ liệu theo cách đó. Tiếp theo, hãy tìm hiểu cách phát hành thông báo về chủ đề này. Thông báo được phát hành cho chủ đề bằng phương thức PUBLISH_TOPICS của mô-đun giả lập API /GOOG/CL_PUBSUB_V1.

Chữ ký của phương thức:

459fe21ce68bd811.png

  1. Trong SAP GUI, hãy nhập mã giao dịch SE38.
  2. Tạo một báo cáo có tên ZPUBSUB_DEMO_PUBLISH.
  3. Trong cửa sổ bật lên, hãy cung cấp thông tin chi tiết như bên dưới rồi nhấp vào Lưu.

9a180c4e9a1e139.png

  1. Trong cửa sổ bật lên tiếp theo, hãy chọn Local Object (Đối tượng cục bộ) hoặc cung cấp tên gói phù hợp.
  2. Trong Trình chỉnh sửa ABAP, hãy thêm mã sau:
" 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. Lưu và kích hoạt báo cáo.
  2. Thực thi báo cáo (F8).

Khi thực thi thành công, bạn sẽ thấy kết quả báo cáo như dưới đây:

384125235efc104.png

8. Xin chúc mừng

Xin chúc mừng! Bạn đã phát hành thành công một thông báo đến API Pub/Sub của Google Cloud Platform bằng cách sử dụng SDK ABAP cho Google Cloud.

Giờ đây, bạn có thể tiếp tục tham gia lớp học lập trình bên dưới để tiếp tục hành trình tìm hiểu cách sử dụng SDK ABAP nhằm truy cập vào nhiều Dịch vụ của Google Cloud.

  • Nhận sự kiện từ Cloud Pub/Sub
  • Tải tệp lên bộ chứa Cloud Storage bằng tính năng phân đoạn
  • Gọi Vertex AI test-bison từ ABAP
  • . . .

9. Dọn dẹp

Nếu bạn không muốn tiếp tục các lớp học lập trình bổ sung liên quan đến SDK ABAP cho Google Cloud, vui lòng tiến hành dọn dẹp.

Xoá dự án

  • Xoá dự án trên Google Cloud:
gcloud projects delete abap-sdk-poc

Xoá từng tài nguyên

  1. Xoá thực thể máy tính:
gcloud compute instances delete abap-trial-docker
  1. Xoá các quy tắc tường lửa:
gcloud compute firewall-rules delete sapmachine
  1. Xoá tài khoản dịch vụ:
gcloud iam service-accounts delete \
    abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com