JavaでSQSの属性を受け取る方法

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) { // } }