Javaで受け取る時には明示的に .withMessageAttributeNames をつけて MessageAttributeも取ってくるように指定をします。
ReceiveMessageResult receiveMessage = sqs.receiveMessage(new ReceiveMessageRequest(QueueUrl) .withMaxNumberOfMessages(5) .withVisibilityTimeout(60 * 5) .withWaitTimeSeconds(20) .withMessageAttributeNames("All"));
取り出し方は以下のようになります。
List<Message> messages = receiveMessage.getMessages(); for (Message message : messages) { String receiptHandle = message.getReceiptHandle(); try { String key = message.getBody(); Map<String, MessageAttributeValue> messageAttributes = message.getMessageAttributes(); String hogeAttribute = messageAttributes.get("hogeAttribute").getStringValue(); } catch (Exception e) { // } }