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
- Bạn đã cài đặt SDK ABAP 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 phiên 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. Trên 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 cho tài khoản của bạn và đặt dự án mặc định thành
abap-sdk-poc
. Ví dụ: vùngus-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.
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 cửa sổ dòng lệnh 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ụ (
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 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'
- 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'
- Để 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:
- Trong SAP GUI, hãy nhập mã giao dịch SPRO.
- Nhấp vào SAP Reference IMG (Hình ảnh tham chiếu SAP).
- 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).
- 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 |
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
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:
- Trong giao diện người dùng SAP, hãy nhập mã giao dịch SE38.
- Tạo một 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ư 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 (Đối tượng cục bộ) hoặc cung cấp tên gói phù hợp.
- 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.
- 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ư dưới đây:
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:
- Trong SAP GUI, hãy nhập mã giao dịch SE38.
- Tạo một 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ư 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 (Đối tượng cục bộ) hoặc cung cấp tên gói phù hợp.
- 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.
- 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ư dưới đây:
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
- Xoá thực thể máy tính:
gcloud compute instances delete abap-trial-docker
- Xoá các quy tắc 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