gpt4 book ai didi

javascript - JS AWS SQS 不返回消息

转载 作者:行者123 更新时间:2023-12-04 15:38:19 25 4
gpt4 key购买 nike

我尝试从 SQS 队列(不是 FIFO)中提取消息,但它不起作用。我有一个 lambda 在 DynamoDB 中写入值,触发另一个 Lambda 创建 SQS 消息。然后,我创建了一个具有 ReceiveMessage、GetQueueAttributes 和 DeleteMessage 权限的 Lambda 函数,并在 SQS 中添加了一个“Lambda 函数触发器”,为我的新 lambda 函数授予权限。每当将条目添加到数据库时,都会触发我的最后一个 lambda 函数,因此触发器似乎可以正常工作。当我尝试使用 sqs.receivemessage(...) 获取条目时,它会等到 WaitTimeSeconds 时间段过去,然后我收到这样的答案:

{
"ResponseMetadata": {
"RequestId": "b1e34ce3-9003-5c00-a3d8-1ab75ba132b8"
}
}

不幸的是,没有添加消息对象。我还尝试将此调用包装在一个循环中,按照其他页面上的建议连续多次尝试,但不幸的是,他一直运行到超时为止,我没有收到消息。当 lambda 运行时,我可以在“Messages in the flight”列表中看到消息。

我尝试修改超时、我调用函数的方式并在谷歌上搜索了很多,但不幸的是我仍然没有收到任何消息。

有什么想法吗?

这是我的代码:

'use strict';
var AWS = require("aws-sdk");
AWS.config.update({region: 'eu-central-1'});
var sqs = new AWS.SQS({apiVersion: '2012-11-05'});
exports.handler =(event, context, callback) => {
var params = {
QueueUrl: 'https://sqs.eu-central-1.amazonaws.com/476423085846/email',
AttributeNames: ['All'],
MaxNumberOfMessages: 5,
MessageAttributeNames: [
'email',
'hash'
],
WaitTimeSeconds: 10
};
sqs.receiveMessage(params, function(err, data) {
if (err)
{
console.log(err, err.stack); // an error occurred
}
else
{
console.info('DATA\n'+JSON.stringify(data));
}
}
}

我的 SQS 设置:

默认可见性超时:5 分钟,消息保留期:4天,最大消息大小:256kb(我的消息应该小得多),交货延迟:0秒,接收消息等待时间:10sec

提前致谢:)

问候基督徒

最佳答案

借助 AWS Lambda SQS 集成,AWS 会为您处理轮询 SQS 队列。 SQS 消息将位于传递给 Lambda 函数调用的 event 对象中。在这种情况下,您不应该直接调用 receiveMessage

关于javascript - JS AWS SQS 不返回消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59021787/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com