gpt4 book ai didi

java - 在amazon sqs、alpine sqs spring boot中批量消费消息

转载 作者:行者123 更新时间:2023-12-01 17:22:57 28 4
gpt4 key购买 nike

我已配置 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 监听器以使用多个消息的任何建议

任何帮助将不胜感激

最佳答案

上述问题的解决方案是:-

final ExecutorService executorService = Executors.newSingleThreadExecutor();
executorService.execute(() -> {
while (true) {
final String queueUrl = amazonSqs.getQueueUrl("enter your queue name").getQueueUrl();
final var receiveMessageRequest = new ReceiveMessageRequest(queueUrl)
.withWaitTimeSeconds(20);

List<Message> messages = amazonSqs.receiveMessage(receiveMessageRequest).getMessages();

while (messages.size() > 0) {
for (final Message queueMessage : messages) {
try {
String message = queueMessage.getBody();
amazonSqs.deleteMessage(new DeleteMessageRequest(queueUrl, queueMessage
.getReceiptHandle()));
} catch (Exception e) {
log.error("Received message with errors " + e);
}
}
messages = amazonSqs.receiveMessage(new ReceiveMessageRequest(queueUrl)).getMessages();
}
}
});
executorService.shutdown();

关于java - 在amazon sqs、alpine sqs spring boot中批量消费消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61257960/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com