从 SQS 检索多条消息
2022-09-01 07:29:23
我在 SQS 中有多条消息。以下代码始终只返回一个,即使有几十个可见的(不在飞行中)。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
}
我也尝试过使用MaxNumberOfMessages,但没有这样的运气:
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"));
以上总是在之前运行,并给我一个>1int
感谢您的输入