我已经将SQS侦听器配置为使用消息列表中的消息,但是一次只能接收一条消息,并且由于无法将model.StudentData转换为java.util.ArrayList<com.amazonaws.services.sqs.model.Message>
的实例而出现错误。
我的代码是:-
@SqsListener(value = "${queueName}", deletionPolicy = SqsMessageDeletionPolicy.NEVER)
public void receiveMessage(final StudentData studentData,
@Header("SenderId") final String senderId, final Acknowledgment acknowledgment) {
// business logic
acknowledgment.acknowledge();
}
关于如何配置sqs侦听器以使用多个消息的任何建议
任何帮助将不胜感激
最佳答案
SQS侦听器批注提供了最简单的配置,它将一一使用消息。此限制直接来自于春季
QueueMessagingTemplate。
要使用批次,您可以直接使用AmazonSQS客户端。
@Autowire AmazonSQSAsync amazonSqs;
...
String queueUrl = amazonSqs.getQueueUrl("queueName").getQueueUrl();
ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest();
receiveMessageRequest.setQueueUrl(queueUrl);
receiveMessageRequest.setWaitTimeSeconds(10); // Listener for messages in the next 10 seconds
receiveMessageRequest.setMaxNumberOfMessages(1000); // If 10000 messages are read stop listening
ReceiveMessageResult receiveMessageResult = amazonSqs.receiveMessage(receiveMessageRequest);
receiveMessageResult.getMessages(); // batch of messages