持续收听 AWS SQS 消息的模式
我有一个简单的类,它使用一些方法来包装适用于 Java 的 AWS SQS 开发工具包中的方法。例如:QueueService
public ArrayList<Hashtable<String, String>> receiveMessages(String queueURL) {
List<Message> messages = this.sqsClient.receiveMessage(queueURL).getMessages();
ArrayList<Hashtable<String, String>> resultList = new ArrayList<Hashtable<String, String>>();
for(Message message : messages) {
Hashtable<String, String> resultItem = new Hashtable<String, String>();
resultItem.put("MessageId", message.getMessageId());
resultItem.put("ReceiptHandle", message.getReceiptHandle());
resultItem.put("Body", message.getBody());
resultList.add(resultItem);
}
return resultList;
}
我还有另一个名为的类,它有一个,并创建了一个.App
main
QueueService
我正在寻找一个“模式”来使in进入以侦听队列中的新消息。现在我有一个循环,我调用了该方法:main
App
while(true)
receiveMessages
while(true) {
messages = queueService.receiveMessages(queueURL);
for(Hashtable<String, String> message: messages) {
String receiptHandle = message.get("ReceiptHandle");
String messageBody = message.get("MessageBody");
System.out.println(messageBody);
queueService.deleteMessage(queueURL, receiptHandle);
}
}
这是正确的方法吗?我应该在 SQS SDK 中使用异步消息接收方法吗?