node.js - AWS SQS 套接字挂断间歇性错误
问题描述
尝试从我的 lambda 中的 SQS 队列接收消息时,我有时会不断收到此错误
2019-07-19T13:10:17.371Z 03b1cea1-0266-45b0-9b54-1fbe561e148a ERROR { Error: socket hang up
at createHangUpError (_http_client.js:323:15)
at TLSSocket.socketOnEnd (_http_client.js:426:23)
at TLSSocket.emit (events.js:194:15)
at TLSSocket.EventEmitter.emit (domain.js:441:20)
at endReadableNT (_stream_readable.js:1125:12)
at process._tickCallback (internal/process/next_tick.js:63:19) code: 'ECONNRESET' }
这是我的代码
const sqs = new AWS.SQS({apiVersion: '2012-11-05'});
module.exports.processEvent = thundra((event, context, callback) => {
let params = {
QueueUrl: queueUrl,
MaxNumberOfMessages : 10
};
sqs.receiveMessage(params).promise().then(res => {
if(res.Messages) {
return Promise.all(res.Messages.map(doWork));
}
})
.catch(err => console.log(err, err.stack))
.then(() => context.succeed())
.catch(err => context.fail(err, err.stack));
});
知道发生了什么吗?
这是我已经尝试过的几件事
- 我尝试将 nodejs 运行时从 v8 更改为 v10。那没有帮助
- 我已经尝试在我的 serverless.yml 中为这个 lambda 函数设置超时设置 - 尝试了 10 秒、20 秒。没有帮助
- 我通过指定“WaitTimeSeconds”属性并在 20 秒到 10 秒之间使用它的值并最终从我的代码中完全删除它来尝试长轮询
到目前为止没有任何帮助。同样重要的是要知道这个错误有时只会发生。不是每次。
解决方案
推荐阅读
- javascript - FirebaseError:权限缺失或不足(所有者)
- c# - C# DataSet 在 JSON 字符串中序列化为 XML
- c# - 当我在 dbcontext 的 OnModelCreating 中时获取特定的用户 ID
- typescript - 使用带有数组的映射类型的打字稿
- r - 灰色ggplot2中正方形上方的填充区域
- swift - 使用数据结果 nil 创建 SecKey
- reactjs - 如何在不将数据传递到状态的情况下从 db 获取数据?
- c++ - Qml WinRt 如何设置窗口大小
- azure - 如何从 powershell 更新 Azure APIM 中的通知模板
- android - 无法解析外部依赖项 com.android.tools:desugar_jdk_libs:1.0.9 因为没有定义存储库