Я работаю над узловым приложением, которое по сути является простым опросчиком AWS SQS, который должен сидеть и слушать новые предметы в разных очередях.node module.export и recursion
Вот мой module.export
:
module.exports = {
readMessage: function(qParams, qType, tableName) {
logger.debug(qType);
SQS.receiveMessage(qParams, handleSqsResponse);
function handleSqsResponse (err, data) {
if(err) logger.error("handleSqsResponse error:" + err);
if (data && data.Messages) {
data.Messages.forEach(processMessage)
readMessage(); // continue reading until draining the queue (or UPTIME reached)
}
else{
logger.debug("no data in sqs.");
// process.exit();
}
}
// 'processing' is mainly writing to logs using winston. Could add here any transformations and transmission to remote systems
function processMessage(sqsMessage){
// Parse sqs messag
var msgObj = JSON.parse(sqsMessage.Body);
// Process
logger.info(msgObj.Message);
_.extend(qParams, { "ReceiptHandle": sqsMessage.ReceiptHandle });
dbMap[qType](msgObj, qParams, tableName);
}
}
}
Проблема Я бегу в когда я пытаюсь вызвать readMessage();
снова. Я получаю ошибку ReferenceError: readMessage is not defined
Ah, gotcha. В этом есть смысл! И тогда я мог бы просто передать те же переменные, которые первоначально были переданы методу 'readMessage()'? – dennismonsewicz
Правильно ... Возможно, вы захотите добавить к нему таймер, но я думаю, это зависит от того, как часто данные будут меняться. – Maroshii
Большое спасибо! Вы спасли меня много времени! – dennismonsewicz