Javaを使用してAmazon SQSのキューにメッセージの送信、キューからの受信を行ってみました。



{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"sqs:DeleteMessage",
"sqs:ReceiveMessage",
"sqs:SendMessage"
],
"Resource": "arn:aws:sqs:ap-northeast-1:[アカウントID]:devblog"
}
]
}





// 認証情報を用意 AWSCredentials credentials = new BasicAWSCredentials( // アクセスキー "********************", // シークレットキー "****************************************" ); // クライアントを生成 client = AmazonSQSClientBuilder .standard() .withCredentials(new AWSStaticCredentialsProvider(credentials)) .withRegion(Regions.AP_NORTHEAST_1.getName()) .build();
// 詳細な条件を指定してメッセージを送信する場合
SendMessageRequest request =
new SendMessageRequest()
.withQueueUrl(QUEUE_URL)
.withDelaySeconds(10) // 10秒間遅延させる(不可視にする)
.withMessageBody("サンプルメッセージA " + System.currentTimeMillis());
client.sendMessage(request);
// シンプルにメッセージを送信する場合
client.sendMessage(QUEUE_URL, "サンプルメッセージB " + System.currentTimeMillis());

ReceiveMessageRequest request =
new ReceiveMessageRequest()
.withQueueUrl(QUEUE_URL)
.withWaitTimeSeconds(5) // 最大5秒間のロングポーリングを行う
.withMaxNumberOfMessages(10); // 最大10件のメッセージを取得する
ReceiveMessageResult result = client.receiveMessage(request);
for (Message message : result.getMessages()) {
System.out.println("Message ID: " + message.getMessageId());
System.out.println("Receipt Handle: " + message.getReceiptHandle());
System.out.println("Message Body: " + message.getBody());
}
※ロングポーリングを使用すると、キュー上にメッセージが無い場合に指定した時間メッセージが来るのを待つことが出来るようになります。// メッセージの削除 client.deleteMessage(QUEUE_URL, message.getReceiptHandle());