Trong Tình huống 2.4, chúng ta đã thấy cách nhiều subscriber đọc từ cùng một hàng đợi SQS có thể ‘giành lấy’ thông tin của nhau, do đó không có subscriber nào nhìn thấy tất cả các thông tin trong hàng đợi. Đôi khi yêu cầu nhiều subscriber trong một hàng đợi nhận được tất cả các thông tin, vì vậy cần có một số cơ chế để gửi một thông tin cho nhiều hàng đợi. Giải pháp là sử dụng một phương thức trung gian để ’truyền tải’ thông điệp đến nhiều subscriber. Trung gian trong trường hợp này là Amazon Simple Notification Service (SNS). Amazon SNS cho phép một ứng dụng gửi một mục đích thông điệp duy nhất và gửi thông điệp đó đến một hoặc nhiều mục tiêu. (Các) mục tiêu của thông báo có thể là HTTP endpoint, thiết bị di động hoặc hàng đợi SQS - và trên thực tế là sự kết hợp giữa nhiều hoặc bất kỳ thành phần nào trong những thành phần đã liệt kê. Kiến trúc cho kịch bản này trông giống như sau:
Nội dung
Lưu ý rằng thông tins Received statistic đã nhận gấp 3 lần thông tins Sent statistic, được mong đợi nếu các thông tin được gửi được ‘rẽ quạt’ thành ba hàng đợi.
Việc thêm một hoặc nhiều hàng đợi SQS làm mục tiêu cho các thông báo SNS rất đơn giản. Chúng ta hãy xem điều này ngay bây giờ.
Bạn sẽ thấy ba subscriber - một subscriber đại diện cho một trong ba hàng đợi SQS arn:aws:sqs:us-west-2:277844687642:idevelop_drawqueue_XX trong đó XX là từ 1
tới 3
.
Khi một thông tin được gửi đến SNS topic, nó sẽ tự động được chuyển đến từng subscriber, trong trường hợp này là ba hàng đợi SQS. Khi trình duyệt gửi các điểm vẽ đến SNS topic, chúng cũng được chuyển đến ba hàng đợi SQS, mỗi hàng được triển khai trên trang web và các điểm được hiển thị trên khung của ba subscriber.
Đoạn mã Javascript này cho biết cách các thông tin được gửi đến SNS topic:
var params = {
thông tin: JSON.stringify(point),
TopicArn: "<SNS Topic ARN>"
};
snsInstance.publish(params, function(err, data){});
Bạn có thể tìm thêm thông tin về AWS SDK cho Javascript và SNS ở đâu?
http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html