Subscribe Google Pub/Sub topic với Spring Cloud GCP PubSub

Trong bài viết trước, mình đã hướng dẫn các bạn cách publish một message vào Google Pub/Sub topic sử dụng Spring Cloud GCP là như thế nào? Trong bài viết này, chúng ta hãy cùng nhau tìm hiểu cách subscribe nó để nhận message với Spring Cloud GCP các bạn nhé!

Mình cũng tạo một Spring Boot với GCP Message dependency như sau:

Kết quả:

Mình cũng sẽ implement interface CommandLineRunner cho class SpringGcpPubsubSubscribeApplication như sau:

Để subscribe và nhận message từ GCP Pub/Sub topic, chúng ta cũng inject class PubSubTemplate và sử dụng phương thức subscribe() của đối tượng này.

Tham số của phương thức subscribe() này lần lượt là tên subscription được gắn với topic và một Consumer object với type là BasicAcknowledgeablePubsubMessage để consume message, cụ thể của mình như sau:

Data nhận được từ GCP Pub/Sub topic là một đối tượng PubsubMessage của thư viện PubSub client. Các bạn có thể lấy được chính xác nội dung message sau khi getData() và gọi phương thức toStringUtf8() như mình làm như trên.

Cho phần authentication với GCP Pub/Sub, mình sẽ sử dụng property spring.cloud.gcp.credentials.location cùng với property spring.cloud.gcp.project-id, như sau:

Kết quả khi mình public một message trên Google Pub/Sub topic:

như sau:

Thông thường sau khi nhận và đã xử lý message từ GCP Pub/Sub topic, không có lỗi gì xảy ra, chúng ta sẽ send một acknowledgement để GCP Pub/Sub topic xoá message đó đi. Các bạn có thể gọi phương thức ack() của đối tượng BasicAcknowledgeablePubsubMessage để làm việc này, như sau:

Lúc này, nếu chạy lại ví dụ, các bạn sẽ thấy message mà chúng ta publish vào topic chỉ được consume và in ra một lần thay vì hai lần ở trên:

Add Comment