我已经将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

08-25 02:18