我基本上是在玩aws sqs,我想建立一个无限的连接来轮询消息。但是我的函数sqs.recieveMessage不是在无限循环中调用的。有人能帮我吗。我的代码和参数如下:
recieveMessageParams: {
AttributeNames: [
"SentTimestamp"
],
MaxNumberOfMessages: 1,
MessageAttributeNames: [
"All"
],
QueueUrl: queueURL,
VisibilityTimeout: 43195,
WaitTimeSeconds: 20
}
function sqsReceivemessage(params) {
while(true) {
sqs.receiveMessage(params, function (err, data) {
if (err) {
console.log("Receive Error", err);
return err;
} else if (data) {
console.log("data recieved")
let body = JSON.parse(data?.Messages[0].Body);
let action = data?.Messages[0].MessageAttributes?.action?.StringValue;
if(action === 'vaxxaEmailAttemptToSend'){
vaxxaEmailAttemptToSend(body);
}
let deleteParams = {
QueueUrl: queueURL,
ReceiptHandle: data.Messages[0].ReceiptHandle
};
sqs.deleteMessage(deleteParams, function (err, data) {
if (err) {
console.log("Delete Error", err);
return err;
} else {
console.log("Message Deleted", data);
return data;
}
});
}
});
}
}
1条答案
按热度按时间xwbd5t1u1#
我认为您的代码布局将受益于Lambda的重新架构,这也将有助于减少可能的错误代码数量,并更容易隔离代码问题: