Muster ständig zu hören AWS SQS-Nachrichten

Habe ich eine einfache Klasse mit dem Namen QueueService mit einigen Methoden, wickeln Sie die Methoden, die von der AWS SQS-SDK für Java. Zum Beispiel:

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;
    }

Habe ich noch eine weitere Klasse mit dem Namen App hat eine main und schafft eine instace von der QueueService.

Ich Suche für ein "Muster" zu machen, die main im App zu hören, für neue Nachrichten in der Warteschlange. Jetzt habe ich eine while(true) Schleife, wo ich den Anruf receiveMessagesMethode:

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);
            }
        }

Ist das der richtige Weg? Sollte ich das async-Nachricht receive-Methode in SQS-SDK?

Schreibe einen Kommentar