我正在使用适用于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是否必要?
答案 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,您将需要通过转换为字节来测量大小。