SQS消息的大小

时间:2018-07-07 17:49:48

标签: javascript aws-sdk

我正在使用适用于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对象作为字符串):计算JSON对象的长度并确保它小于262144吗?

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

选项2是否必要?

1 个答案:

答案 0 :(得分:1)

SQS uses UTF-8 for strings,因此,如果消息的任何部分都可以包含非ASCII字符,则由于UTF-8 is a variable width encoding which uses 1 to 4 bytes for a single character,您将需要通过转换为字节来测量大小。