SQSに複数のメッセージがあります。次のコードは、数十が表示されている場合でも(飛行中ではない)、 常に1つだけを返します。setMaxNumberOfMessages一度に複数を消費できると思いました..これを誤解しましたか?
CreateQueueRequest createQueueRequest = new CreateQueueRequest().withQueueName(queueName);
String queueUrl = sqs.createQueue(createQueueRequest).getQueueUrl();
ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(queueUrl);
receiveMessageRequest.setMaxNumberOfMessages(10);
List<Message> messages = sqs.receiveMessage(receiveMessageRequest).getMessages();
for (Message message : messages) {
// i'm a message from SQS
}
私はまた、そのような運なしでwithMaxNumberOfMessagesを使用してみました:
receiveMessageRequest.withMaxNumberOfMessages(10);
キューにメッセージがあることをどうやって知ることができますか?1つ以上?
Set<String> attrs = new HashSet<String>();
attrs.add("ApproximateNumberOfMessages");
CreateQueueRequest createQueueRequest = new CreateQueueRequest().withQueueName(queueName);
GetQueueAttributesRequest a = new GetQueueAttributesRequest().withQueueUrl(sqs.createQueue(createQueueRequest).getQueueUrl()).withAttributeNames(attrs);
Map<String,String> result = sqs.getQueueAttributes(a).getAttributes();
int num = Integer.parseInt(result.get("ApproximateNumberOfMessages"));
上記は常に前に実行され、int
>1である
ご入力いただきありがとうございます