Senden, Empfangen und Löschen von Amazon Simple Queue Service Nachrichten - AWS SDK for Java 2.x

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Senden, Empfangen und Löschen von Amazon Simple Queue Service Nachrichten

Eine Nachricht ist ein Datenabschnitt, der von verteilten Komponenten gesendet und empfangen werden kann. Nachrichten werden immer mit einer SQS-Warteschlange geliefert.

Die sqsClient Variable, die in den folgenden Beispielen verwendet wird, kann aus dem folgenden Codeausschnitt erstellt werden.

SqsClient sqsClient = SqsClient.create();

Wenn Sie ein SqsClient mit der statischen create() Methode erstellen, konfiguriert das SDK die Region mithilfe der standardmäßigen Regionsanbieterkette und die Anmeldeinformationen mithilfe der standardmäßigen Anbieterkette für Anmeldeinformationen.

Senden einer Nachricht

Fügen Sie einer -Amazon Simple Queue ServiceWarteschlange eine einzelne Nachricht hinzu, indem Sie die SqsClient Client-sendMessageMethode aufrufen. Geben Sie ein SendMessageRequest Objekt an, das die URL der Warteschlange, den Nachrichtentext und den optionalen Verzögerungswert (in Sekunden) enthält.

Importe

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sqs.SqsClient; import software.amazon.awssdk.services.sqs.model.*; import java.util.List;

Code

sqsClient.sendMessage(SendMessageRequest.builder() .queueUrl(queueUrl) .messageBody("Hello world!") .delaySeconds(10) .build()); sqsClient.sendMessage(sendMsgRequest);

Senden mehrerer Nachrichten in einer Anforderung

Senden mehrerer Nachrichten in einer einzigen Anforderung unter Verwendung der sendMessageBatch-Methode des SqsClient . Diese Methode verwendet eine SendMessageBatchRequest, die die Warteschlangen-URL und eine Liste der zu sendenden Nachrichten enthält. (Jede Nachricht ist ein SendMessageBatchRequestEntry.) Sie können das Senden einer bestimmten Nachricht auch verzögern, indem Sie einen Verzögerungswert für die Nachricht festlegen.

Importe

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sqs.SqsClient; import software.amazon.awssdk.services.sqs.model.*; import java.util.List;

Code

SendMessageBatchRequest sendMessageBatchRequest = SendMessageBatchRequest.builder() .queueUrl(queueUrl) .entries(SendMessageBatchRequestEntry.builder().id("id1").messageBody("Hello from msg 1").build(), SendMessageBatchRequestEntry.builder().id("id2").messageBody("msg 2").delaySeconds(10).build()) .build(); sqsClient.sendMessageBatch(sendMessageBatchRequest);

Sehen Sie sich das vollständige Beispiel auf an GitHub.

Nachrichten abrufen

Abrufen von aktuell in der Warteschlange enthaltenen Nachrichten durch Aufruf der receiveMessage-Methode des SqsClient . Diese Methode verwendet eine ReceiveMessageRequest, die die Warteschlangen-URL enthält. Sie können auch die maximale Anzahl von Nachrichten angeben, die zurückgegeben werden soll. Nachrichten werden als Liste von Message-Objekten zurückgegeben.

Importe

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sqs.SqsClient; import software.amazon.awssdk.services.sqs.model.*; import java.util.List;

Code

try { ReceiveMessageRequest receiveMessageRequest = ReceiveMessageRequest.builder() .queueUrl(queueUrl) .maxNumberOfMessages(5) .build(); List<Message> messages = sqsClient.receiveMessage(receiveMessageRequest).messages(); return messages; } catch (SqsException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } return null;

Sehen Sie sich das vollständige Beispiel auf an GitHub.

Löschen einer Nachricht nach Erhalt

Nachdem Sie eine Nachricht empfangen und ihren Inhalt verarbeitet haben, löschen Sie die Nachricht aus der Warteschlange, indem Sie den Empfangs-Handle und die Warteschlangen-URL der Nachricht an die SqsClient's deleteMessage Methode senden.

Importe

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sqs.SqsClient; import software.amazon.awssdk.services.sqs.model.*; import java.util.List;

Code

try { for (Message message : messages) { DeleteMessageRequest deleteMessageRequest = DeleteMessageRequest.builder() .queueUrl(queueUrl) .receiptHandle(message.receiptHandle()) .build(); sqsClient.deleteMessage(deleteMessageRequest); }

Sehen Sie sich das vollständige Beispiel auf an GitHub.

Weitere Infos