亚马逊SQS超过2GB的数据

时间:2017-05-02 12:50:08

标签: amazon-web-services amazon-sqs

使用SQS对来自客户端的一些上传进行排队。我收到以下错误:

  

com.amazonaws.services.sqs.model.AmazonSQSException:一个或多个参数无效。原因:消息必须短于262144字节。 (服务:AmazonSQS;状态代码:400;错误代码:InvalidParameterValue;请求ID:

我正在使用扩展客户端库。以下是我用来发送消息的代码:

MessageAttributeValue msgAttr = new MessageAttributeValue();
byte [] byteArr=attachment.getBytes();
ByteBuffer buf = ByteBuffer.wrap(byteArr);
msgAttr.setBinaryValue(buf);
msgAttr.setDataType("Binary");
smr.addMessageAttributesEntry("attachment", msgAttr);

1 个答案:

答案 0 :(得分:1)

根据Amazon SQS的Limits Related to Messages文档:

  

邮件大小
  最小消息大小为1个字节(1个字符)。最大值为262,144字节(256 KB)。

     

要发送大于256 KB的邮件,您可以使用Amazon SQS Extended Client Library for Java。此库允许您发送Amazon SQS消息,该消息包含对Amazon S3中消息有效内容的引用。 最大有效负载大小为2 GB。

该库基本上将数据存储在Amazon S3中,然后将引用插入Amazon SQS消息。

无论出于何种原因,该库都会对附件强制实施2GB的限制。您可以尝试修改代码以处理更大尺寸的文件,或者您可以编写自己的代码,将对象存储在Amazon S3中,并简单地包含对亚马逊的引用Amazon SQS消息中的S3对象。