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 để xuất bản một sự kiện lên API Google Cloud Pub/Sub bằng ABAP SDK cho Google Cloud.
Các dịch vụ sau đây của Google Cloud được 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 điều sau:
- Bật Pub/Sub trong một dự án Google Cloud.
- Tạo một chủ đề Pub/Sub.
- Xuất bản thông báo.
2. Trước khi bắt đầu
- Bạn đã cài đặt ABAP SDK cho Google Cloud trên hệ thống của mình. Bạn có thể tham khảo lớp học lập trình Cài đặt bản dùng thử ABAP trên Google Cloud Platform để thiết lập một hệ thống mới.
- Bạn sử dụng Cloud Shell, một môi trường dòng lệnh chạy trong Google Cloud. Trong Cloud Console, hãy nhấp vào Kích hoạt Cloud Shell ở góc trên cùng bên phải:
- Chạy các lệnh sau để xác thực tài khoản của bạn và đặt dự án mặc định thành
abap-sdk-poc
. Vùngus-west4-b
được dùng làm ví dụ. Nếu cần, vui lòng thay đổi dự án và khu vực trong các lệnh sau dựa trên 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 bao gồm các thành phần sau đây của dịch vụ Pub/Sub:
- Nhà xuất bản (còn gọi là nhà sản xuất): tạo tin nhắn và gửi (xuất bản) tin nhắn đó đến dịch vụ nhắn tin theo một chủ đề cụ thể.
- 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 gồm các thông báo.
4. Thiết lập dịch vụ Pub/Sub
- Để tạo tài khoản dịch vụ có vai trò bắt buộc, hãy chạy lệnh sau trong thiết bị đầu cuối Cloud Shell:
gcloud iam service-accounts create abap-sdk-pubsub-tester --display-name="Service Account for PubSub"
- Để bật API Pub/Sub cho tài khoản dịch vụ của bạn (
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
- Cấp vai trò IAM pubsub.topics.create cho tài khoản dịch vụ để có thể tạo một chủ đề. Chạy lệnh sau trong cửa sổ dòng lệnh của 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'
- Cấp vai trò IAM pubsub.topics.publish cho tài khoản dịch vụ để có thể xuất bản một thông báo cho chủ đề. Chạy lệnh sau trong cửa sổ dòng lệnh của 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'
- Để xác minh rằng các vai trò đã được thêm, hãy chuyển đến trang IAM. Tài khoản dịch vụ mà bạn đã tạo sẽ xuất hiện 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 làm theo các bước sau:
- Trong SAP GUI, hãy nhập mã giao dịch SPRO.
- Nhấp vào SAP Reference IMG.
- Nhấp vào ABAP SDK for Google Cloud > Basic Settings > Configure Client Key (ABAP SDK cho Google Cloud > Cài đặt cơ bản > Định cấu hình khoá ứng dụng).
- Nhấp vào Mục mới.
- 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 |
Mã 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
6. Tạo một chủ đề
Bạn tạo một chủ đề bằng phương thức CREATE_TOPICS của API stub /GOOG/CL_PUBSUB_V1. Chữ ký của phương thức:
- Trong SAP GUI, hãy nhập mã giao dịch SE38.
- Tạo báo cáo có tên ZPUBSUB_DEMO.
- Trong cửa sổ bật lên, hãy cung cấp thông tin chi tiết như minh hoạ bên dưới, rồi nhấp vào Lưu.
- Trong cửa sổ bật lên tiếp theo, hãy chọn Local Object hoặc cung cấp tên gói nếu thích hợp.
- Trong Trình chỉnh sửa ABAP, hãy thêm đoạn 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.
- Lưu và kích hoạt báo cáo.
- 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ư minh hoạ dưới đây:
7. Xuất bản thông báo lên chủ đề
Khi chủ đề đã sẵn sàng, giờ đây, chúng ta có thể tập trung vào việc gửi dữ liệu theo cách của mình. Bước tiếp theo, hãy tìm hiểu cách xuất bản thông báo về chủ đề này. Thông báo được xuất bản cho chủ đề bằng phương thức PUBLISH_TOPICS
của phần gốc API /GOOG/CL_PUBSUB_V1
.
Chữ ký của phương thức:
- Trong SAP GUI, hãy nhập mã giao dịch SE38.
- Tạo báo cáo có tên ZPUBSUB_DEMO_PUBLISH.
- Trong cửa sổ bật lên, hãy cung cấp thông tin chi tiết như minh hoạ bên dưới, rồi nhấp vào Lưu.
- Trong cửa sổ bật lên tiếp theo, hãy chọn Local Object hoặc cung cấp tên gói nếu thích hợp.
- Trong Trình chỉnh sửa ABAP, hãy thêm đoạn 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.
- Lưu và kích hoạt báo cáo.
- 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ư minh hoạ dưới đây:
8. Xin chúc mừng
Xin chúc mừng! Bạn đã xuất bản thành công một thông báo đến API Pub/Sub của Google Cloud Platform bằng ABAP SDK cho Google Cloud.
Giờ đây, bạn có thể tiếp tục với lớp học lập trình bên dưới để tiếp tục hành trình học tập cách sử dụng ABAP SDK để truy cập vào nhiều dịch vụ của Google Cloud.
- Nhận một sự kiện từ Cloud Pub/Sub
- Tải tệp lên bộ chứa lưu trữ trên đám mây 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 với các khoá học lập trình bổ sung liên quan đến ABAP SDK 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
- Xoá phiên bản điện toán:
gcloud compute instances delete abap-trial-docker
- Xoá các quy tắc về tường lửa:
gcloud compute firewall-rules delete sapmachine
- Xoá tài khoản dịch vụ:
gcloud iam service-accounts delete \
abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com