Tengo varios mensajes en SQS. El siguiente código siempre devuelve solo uno, incluso si hay docenas visibles (no en vuelo). setMaxNumberOfMessages Pensé que permitiría que se consumieran múltiples a la vez. ¿Lo he entendido mal?Recuperar mensajes múltiples de SQS
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
}
También he intentado usar withMaxNumberOfMessages sin tal suerte:
receiveMessageRequest.withMaxNumberOfMessages(10);
¿Cómo sé que hay mensajes en la cola? ¿Más de 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"));
Lo anterior siempre se ejecuta antes y me da una int
que es> 1
Gracias por su entrada
Su enlace de referencia no está trabajando ahora, ¿podría actualizarlo? Supongo que es http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/sqs/AmazonSQSClient.html#receiveMessage(java.lang.String) – coderz