使用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);
答案 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对象。