javascript - 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有必要吗?
解决方案
SQS 对字符串使用 UTF-8,因此如果您的消息的任何部分可以包含非 ASCII 字符,那么您需要通过转换为字节来测量大小,因为UTF-8 是一种可变宽度编码,它使用 1 到 4 个字节来表示一个字符。
推荐阅读
- python - 基于另一列将数据从行移动到列
- message-queue - 在 VMS 平台上运行的 BEA 消息队列 - 登录、跟踪
- linux - 即使超过软限制,配额也不会报告任何警告。只报告硬限制的警告
- javascript - 仅在从后端获取数据后如何在 useEffect 中调用函数?
- python - python - 十进制'点'到'逗号',使用2个小数
- load-testing - 如何在 Locust 负载测试工具中计算每秒的实际请求数
- javascript - 页面分页总是显示第一个元素 React JS
- java - 自定义通知中的单选按钮
- ruby-on-rails - 应用程序布局样式表包含无法使用 Wicked PDF 使用 Bootstrap 找到图像资产
- keycloak - 用户api中的keycloak返回服务