首页 > 解决方案 > SQS 消息的大小

问题描述

我正在使用适用于 JavaScript 的 AWS-SDK 向 SQS 发送消息。每条消息的大小必须为 256kb。

每条消息都是在另一个服务上解码的 JSON 对象。

选项 1:JSON 对象作为字符串:计算长度并确保它小于 262144?

function* getStuff(rows, someConfig) {
  let totesPayload = 0
  let payload = []
  for (const row of rows) {
   const singleItemInPayload = rowToPayload(row, someConfig)
   if (singleItemInPayload.length + totesPayload < 262144 - (enclosingObjectSize())) {
     payload.push(singleItemInPayload)
     totesPayload += singleItemInPayload.length
   } else {
     yield({ payload })
     payload = []
   }
}

选项 2:Buffer.from(JSON Object as string):计算 JSON 对象的长度并确保它小于 262144?

大部分数据都是文本,所以我不确定将其放入字节数组中是否会得到任何好的帮助。

选项2有必要吗?

标签: javascriptaws-sdkamazon-sqs

解决方案


SQS 对字符串使用 UTF-8,因此如果您的消息的任何部分可以包含非 ASCII 字符,那么您需要通过转换为字节来测量大小,因为UTF-8 是一种可变宽度编码,它使用 1 到 4 个字节来表示一个字符


推荐阅读