0
0
Lập trình
Admin Team
Admin Teamtechmely

Kích hoạt Cloud Function từ Pub/Sub trong GCP

Đăng vào 1 tháng trước

• 3 phút đọc

☁️ Kích hoạt Cloud Function từ Cloud Pub/Sub

Google Cloud Functions tích hợp một cách mượt mà với Cloud Pub/Sub, cho phép bạn thực thi mã khi có thông điệp được xuất bản tới một chủ đề. Điều này mở ra khả năng kiến trúc hướng sự kiện, nơi mà các hàm phản ứng với dòng dữ liệu theo thời gian thực. 🚀


Mục tiêu bài viết

Chúng ta sẽ thực hiện:

  1. Tạo một Cloud Pub/Sub Topic
  2. Tạo Cloud Function được kích hoạt bởi sự kiện Pub/Sub

Bước 1: Tạo Cloud Pub/Sub Topic

Đi tới Cloud Pub/Sub → TẠO CHỦ ĐỀ

Nhập các thông tin sau:

  • Topic ID: mytopic1
  • Để các cài đặt còn lại ở mặc định

Nhấn TẠO.

Kiểm tra cài đặt

  • Xem lại rằng chủ đề đã được tạo thành công.
  • Xác minh rằng Subscription đã được đính kèm.

Bước 2: Tạo Cloud Function với Triggers từ Pub/Sub

Tab Cấu hình

  • Tên dịch vụ: cf-demo2-events-pubsub
  • Vùng: us-central1
  • Trigger: Cloud Pub/Sub
  • Chủ đề: mytopic1
  • Tùy chọn khác: Xem lại các mặc định
  • Nhấn TIẾP THEO.

Tab Mã

  • Runtime: Node.js 20
  • Sử dụng mã mẫu tự động được điền (dưới đây)
  • Nhấn Lưu và TRIỂN KHAI.
javascript Copy
const functions = require('@google-cloud/functions-framework');

// Đăng ký một callback CloudEvent với Functions Framework sẽ
// được thực thi khi chủ đề kích hoạt Pub/Sub nhận được một thông điệp.
functions.cloudEvent('helloPubSub', cloudEvent => {
  // Thông điệp Pub/Sub được truyền dưới dạng dữ liệu payload của CloudEvent.
  const base64name = cloudEvent.data.message.data;

  const name = base64name
    ? Buffer.from(base64name, 'base64').toString()
    : 'Thế giới';

  console.log(`Xin chào, ${name}!`);
});

Bước 3: Xem nhật ký Cloud Function

  • Đi tới: Cloud Function → cf-demo2-events-pubsub → Nhật ký
  • Bạn sẽ thấy nhật ký thực thi khi có thông điệp được xuất bản.

Bước 4: Xuất bản thông điệp tới chủ đề

Đi tới Cloud Pub/Sub → mytopic1 → THÔNG ĐIỆP → XUẤT BẢN THÔNG ĐIỆP

Nhập:

  • Số lượng thông điệp: 10
  • Nội dung thông điệp: My Pub/Message

Nhấn XUẤT BẢN.


Bước 5: Kiểm tra lại nhật ký

  • Đi tới nhật ký Cloud Function
  • Bạn sẽ thấy:
plaintext Copy
Xin chào, My Pub/Message!

được ghi lại nhiều lần (một lần cho mỗi thông điệp được xuất bản).


Thực hành tốt nhất

  • Giữ cho mã của bạn đơn giản và rõ ràng: Tránh làm phức tạp mã của bạn. Sử dụng các hàm nhỏ và có trách nhiệm cụ thể.
  • Kiểm tra và thử nghiệm mã: Đảm bảo rằng bạn thử nghiệm mã của mình trong môi trường phát triển trước khi triển khai lên môi trường sản xuất.
  • Quản lý lỗi: Sử dụng các khối try-catch để quản lý các lỗi trong mã của bạn.

Cạm bẫy thường gặp

  • Không kiểm tra thông điệp: Đảm bảo bạn xử lý trường hợp khi không có dữ liệu trong thông điệp.
  • Thiếu nhật ký: Đảm bảo bạn có nhật ký đủ để theo dõi và gỡ lỗi khi cần thiết.

Mẹo hiệu suất

  • Giảm thiểu kích thước thông điệp: Sử dụng các định dạng nén nếu cần thiết để giảm kích thước thông điệp gửi qua Pub/Sub.
  • Tối ưu hóa hàm của bạn: Đảm bảo hàm của bạn chạy nhanh và tiết kiệm tài nguyên để tránh chi phí cao.

Vấn đề và giải pháp

  • Vấn đề: Không nhận được thông điệp trong Cloud Function.
    • Giải pháp: Kiểm tra cài đặt chủ đề và subscription, đảm bảo rằng cả hai đều được cấu hình chính xác.

FAQs

Hỏi: Tôi có thể sử dụng ngôn ngữ nào cho Cloud Functions?
Đáp: Bạn có thể sử dụng Node.js, Python, Go, và nhiều ngôn ngữ khác.

Hỏi: Có bao nhiêu thông điệp tôi có thể gửi qua Pub/Sub?
Đáp: Bạn có thể gửi hàng triệu thông điệp một cách đồng thời, nhưng hãy chú ý đến giới hạn quy mô.


Kết luận

Chúng ta đã xem qua cách tạo một Cloud Function được kích hoạt từ Cloud Pub/Sub trong Google Cloud. Điều này mở ra nhiều khả năng cho các ứng dụng hướng sự kiện. Hãy bắt đầu thử nghiệm ngay hôm nay để xây dựng các ứng dụng mạnh mẽ và linh hoạt hơn!

Đừng quên theo dõi các bài viết tiếp theo để cập nhật những kiến thức mới nhất trong lĩnh vực phát triển phần mềm!

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào