小编jzo*_*mtn的帖子

检查SQS消息批次的大小

已发布的SQS消息的大小有限制.单条消息不能大于256 KB,一批消息(最多10条)也不能超过256 KB.将消息添加到集合以便稍后发布到SQS队列时,如何跟踪消息大小以确保我的请求保持在限制之下?

我已经研究了获取对象大小的方法,并且我知道在调用之后我可以使用失败消息的ID sendMessageBatch().我不认为这些都是非常好的解决方案,因为对象本身的大小省略了消息的开销数据(我认为也很重要),我真的不想仅仅因为管理失败的消息批次太大了.我真的不希望我的消息那么大,但你永远不知道.

要批量处理和发送的代码段:

List<SendMessageBatchRequestEntry> entries = new LinkedList<>();
Run Code Online (Sandbox Code Playgroud)

然后循环:

SendMessageBatchRequestEntry entry = new SendMessageBatchRequestEntry();

entry.setMessageBody(gson.toJson(message));
entry.setMessageAttributes(attributes);             
entry.setId(messageId);

// How to make sure `entry` is not larger than 256 KB, and how to
// make sure adding this entry won't cause the batch to exeed 256 KB?

entries.add(entry);
Run Code Online (Sandbox Code Playgroud)

最后:

client.sendMessageBatch(queueUrl, entries);
Run Code Online (Sandbox Code Playgroud)

java amazon-sqs amazon-web-services

5
推荐指数
1
解决办法
1879
查看次数

标签 统计

amazon-sqs ×1

amazon-web-services ×1

java ×1