1件ずつSQSを作成するケース
List<String> hogeList = getHogeList(); //StringのListを返すメソッド for (String title : hogeList) { try { sqs.sendMessage(new SendMessageRequest(queueUrl, title)); } catch (Throwable t) { t.printStackTrace(); } }
10件ずつSQSを作成するケース
SendMessageBatchで一度に送れるのは最大で10件です。
http://docs.aws.amazon.com/ja_jp/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-batch-api.html#send-message-batch-limit
List<String> hogeList = getHogeList(); //StringのListを返すメソッド List<List<String>> devideHogeList = devide(hogeList, 10); //Listを指定件数ずつに分割するメソッド for (List<String> hogeSubList : devideHogeList) { try { List<SendMessageBatchRequestEntry> entries = new ArrayList<SendMessageBatchRequestEntry>(); for (String title : hogeSubList) { entries.add(new SendMessageBatchRequestEntry(title, title)); //一度に送るリクエストの中でmessageBodyだけでなく、ユニークなidを付ける必要があります。 } sqs.sendMessageBatch(new SendMessageBatchRequest( queueUrl, entries)); } catch (Throwable t) { t.printStackTrace(); } }
また、Batch以外にはAmazonSQSAsyncClientを使うことで水平スケーリングすることも可能です。
http://docs.aws.amazon.com/ja_jp/AWSSimpleQueueService/latest/SQSDeveloperGuide/throughput.html
参考
http://qiita.com/uzresk/items/7a2a0d7ef85445c50e31