Trong trường hợp của tôi, tôi đang cố triển khai máy chủ phụ trợ chạy các phép tính tốn thời gian khá dài. Tính toán này được quản lý bởi Lambda đề cập đến một số API bên ngoài.Thông báo cho khách hàng trình duyệt khi chức năng Lambda được thực hiện bằng cách sử dụng Amazon SQS
Để giải quyết vấn đề này, tôi đang sử dụng API API của Amazon có giới hạn thực thi 10 giây. Tuy nhiên Lambda chạy khoảng 100 giây.
Để tránh giới hạn này, tôi đang sử dụng hàm Lambda thứ 2 để thực hiện phép tính tốn thời gian này & báo cáo rằng tính toán được bắt đầu.
tôi trông rất giống như thế này:
var AWS = require('aws-sdk');
var colors = require('colors');
var functionName = 'really-long'
var lambda = new AWS.Lambda({apiVersion: '2015-03-31'});
var params = {
FunctionName: functionName,
InvocationType: 'Event'
};
lambda.invoke(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(functionName.green + " was successfully executed and returned:\n" + JSON.stringify(data, null, 2).gray); // successful response
});
console.log("All done!".rainbow);
Mã này được thực hiện trên AWS API Gateway bởi hàng ngàn khách hàng các trình duyệt một cách độc lập.
Để thông báo cho từng khách hàng cụ thể rằng việc thực hiện hàm Lambda của anh ta đã được thực hiện thành công, tôi đã lên kế hoạch sử dụng AWS SQS (vì bỏ phiếu dài và một số chức năng hữu ích khác trong hộp).
Vì vậy, câu hỏi của tôi là:
Làm thế nào tôi có thể xác định trên máy khách mà thông điệp trong hàng đợi thuộc về khách hàng đặc biệt này? Hoặc tôi có nên lặp qua tất cả các hàng đợi để tìm thông điệp thích hợp bởi một số tham số ID yêu cầu trong mọi trình duyệt của khách hàng không? Tôi đoán rằng phương pháp này sẽ không hiệu quả khi 1000 khách hàng sẽ đồng thời chờ kết quả của họ.
Tôi hiểu rằng tôi có thể viết kết quả cho DynamoDB ví dụ và định kỳ thăm dò ý kiến DB cho kết quả thông qua một số API tự chế. Nhưng có giải pháp thanh lịch nào để thông báo cho khách hàng dựa trên trình duyệt về việc hoàn thành việc thực hiện chức năng Lambda tốn thời gian dựa trên một số giải pháp Amazon PaaS không?