У меня есть среда рабочего уровня NodeJS Elastic Beanstalk, которая принимает сообщения из очереди SQS и отправляет их на внешний URL-адрес.Код ниже работает, как и ожидалось, но сообщение остается «в полете» в SQS.Я не вижу никакой документации о том, как сообщить SQS, что сообщение успешно обработано?
var http = require('http'),
request = require("request"),
fs = require('fs');
http.createServer(function (req, res) {
req.on('data', function (data) {
var jsonObj = JSON.parse(data);
var jsonString = JSON.stringify(jsonObj);
log("Processing " + jsonString);
request.post('http://example.com', {
json: true,
body: jsonString,
headers: {
"content-type": "application/json",
}
}, (error, res, body) => {
if (error) {
log(`Error ${error}`);
return;
}
returnResponse(res, JSON.stringify(body));
})
});
}).listen(process.env.PORT || 3000);
function returnResponse(httpResponse, message) {
log(`Response status code ${httpResponse.statusCode} - ${message}`);
httpResponse.writeHead(httpResponse.statusCode);
httpResponse.write(message);
httpResponse.end();
}
var log = function (entry) {
fs.appendFileSync('/tmp/output.log', new Date().toISOString() + ' - ' + entry + '\n');
};