Amazon SES, SNS and SQS (Part II)
Như trong Phần I mình đã giới thiệu và hướng dẫn cách cài đặt cho 03 dịch vụ có thể làm việc được với nhau cho mục đích tracking email status. Trong phần II này, mình sẽ đi vào chi tiết làm sao để xử lý các thông tin mà 03 dịch vụ này cung cấp. Do dự án hiện tại mình đang tham gia sử dụng ngôn ...
Như trong Phần I mình đã giới thiệu và hướng dẫn cách cài đặt cho 03 dịch vụ có thể làm việc được với nhau cho mục đích tracking email status. Trong phần II này, mình sẽ đi vào chi tiết làm sao để xử lý các thông tin mà 03 dịch vụ này cung cấp. Do dự án hiện tại mình đang tham gia sử dụng ngôn ngữ Ruby (và sử dụng Rails framework) nên mình sẽ dùng code Ruby để thực hiện việc xử lý nhé. Mình sẽ chia thành hai kiểu là xử lý thụ động và xử lý chủ động để mọi người có thể lựa chọn cho phù hợp với mục đích sử dụng của mình.
Xử lý thụ động
Xử lý thụ động là gì? Là chúng ta sẽ thụ động lắng nghe những thông tin mà Amazon SNS trả về cho server của mình mỗi khi nó nhận được một email status do chúng ta gửi đi thông qua dịch vụ Amazon SES.
Ưu điểm của việc xử lý này là chúng ta sẽ xử lý được luôn mỗi khi có một email nào đó gửi đi và nhận được trạng thái của email đó và chúng ta cũng không cần phải sử dụng đến dịch vụ Amazon SQS (nếu thực sự bạn thấy không cần thiết). Nhược điểm của nó là bạn cần phải đầu tư về phần cứng và hạ tầng để xử lý cũng như tránh việc bị lack thông tin do Amazon SNS gửi về trong trường hợp bạn gửi email số lượng lớn. Để test việc xử lý này trên local cho tiện việc debug và kiểm tra, mình sẽ sử dụng phần mềm Ngrok để có thể public localhost ra internet.
Lý do tại sao chúng ta lại cần phải public localhost ra internet? Vì việc xử lý thụ động này là chúng ta sẽ tạo một endpoint với danh nghĩa là 1 subscription của SNS. Mỗi khi có 1 trạng thái của email nào đó từ SES gửi tới SNS, SNS sẽ thực hiện việc gửi notification cho chúng ta xử lý thông qua đường dẫn mà chúng ta đã đăng ký cho topic trên SNS. Cách tạo 1 topic trên SNS, các bạn có thể xem lại hướng dẫn ở phần I. Giờ chúng ta đi vào phần code trước khi đăng ký 1 subscription trong SNS topic nhé