Fab*_*cio 2 amazon-sqs amazon-web-services node.js
我在想那段代码他们正在将所有消息发送到我的 SQS 队列,但是当在我的数组上使用超过 10 个值时,我总是收到错误消息,表明已达到超出限制。
我无法增加我的 SQS,所以我必须将消息从 10 发送到 10。
任何人都对我需要从那个特定案例中获得的最佳方法提出建议?
module.exports.sendMessageBatch = function sendMessages(queueUrl, messages) {
for (var i = 0; i < messages.length;) {
var params = {
QueueUrl: queueUrl,
Entries: []
};
for (var j = 0; j < 10 && i < messages.length; i++ , j++) {
params.Entries.push({
Id: uuid.v4(),
MessageBody: JSON.stringify(messages[i])
});
}
return sqs.sendMessageBatch(params).promise();
}
Run Code Online (Sandbox Code Playgroud)
该SendMessageBatch -亚马逊简单队列服务文档说,你只能一次发送多达10条信息,所以你必须编写自己的逻辑。基本上将数组分成 10 个批次,然后在循环中发送请求。像这样的东西:
const splitArray = require("split-array");
async function sendMessages(queueUrl, messages) {
const spilttedArray = splitArray(messages, 10);
for (const arr of spilttedArray) {
var params = {
QueueUrl: queueUrl,
Entries: []
};
for (const message of arr) {
params.Entries.push({
Id: uuid.v4(),
MessageBody: JSON.stringify(message)
});
}
await sqs.sendMessageBatch(params).promise();
}
}
Run Code Online (Sandbox Code Playgroud)
有一个包支持按顺序和并行发送批量消息,以防您想通过该路由。sqs-bulk-loader
| 归档时间: |
|
| 查看次数: |
5961 次 |
| 最近记录: |