in src/main/java/com/amazon/sqs/javamessaging/AmazonSQSExtendedClient.java [840:866]
private void checkMessageAttributes(Map<String, MessageAttributeValue> messageAttributes) {
int msgAttributesSize = getMsgAttributesSize(messageAttributes);
if (msgAttributesSize > clientConfiguration.getPayloadSizeThreshold()) {
String errorMessage = "Total size of Message attributes is " + msgAttributesSize
+ " bytes which is larger than the threshold of " + clientConfiguration.getPayloadSizeThreshold()
+ " Bytes. Consider including the payload in the message body instead of message attributes.";
LOG.error(errorMessage);
throw SdkClientException.create(errorMessage);
}
int messageAttributesNum = messageAttributes.size();
if (messageAttributesNum > SQSExtendedClientConstants.MAX_ALLOWED_ATTRIBUTES) {
String errorMessage = "Number of message attributes [" + messageAttributesNum
+ "] exceeds the maximum allowed for large-payload messages ["
+ SQSExtendedClientConstants.MAX_ALLOWED_ATTRIBUTES + "].";
LOG.error(errorMessage);
throw SdkClientException.create(errorMessage);
}
Optional<String> largePayloadAttributeName = getReservedAttributeNameIfPresent(messageAttributes);
if (largePayloadAttributeName.isPresent()) {
String errorMessage = "Message attribute name " + largePayloadAttributeName.get()
+ " is reserved for use by SQS extended client.";
LOG.error(errorMessage);
throw SdkClientException.create(errorMessage);
}
}