ServiceBusReceiverClient Klasse
- java.
lang. Object - com.
azure. messaging. servicebus. ServiceBusReceiverClient
- com.
Implementiert
public final class ServiceBusReceiverClient
implements AutoCloseable
Ein synchroner Empfänger, der für den Empfang ServiceBusReceivedMessage von einer Warteschlange oder einem Thema/Abonnement auf Azure Service Bus verantwortlich ist.
Die in diesem Dokument gezeigten Beispiele verwenden ein Anmeldeinformationsobjekt namens DefaultAzureCredential für die Authentifizierung, das für die meisten Szenarien geeignet ist, einschließlich lokaler Entwicklungs- und Produktionsumgebungen. Darüber hinaus wird die Verwendung einer verwalteten Identität für die Authentifizierung in Produktionsumgebungen empfohlen. Weitere Informationen zu verschiedenen Authentifizierungsmethoden und den entsprechenden Anmeldeinformationstypen finden Sie in der Dokumentation zu Azure Identity."
Beispiel: Erstellen eines Empfängers und Empfangen von Nachrichten
Im folgenden Codebeispiel wird die Erstellung und Verwendung des synchronen Clients ServiceBusReceiverClient zum Empfangen von Nachrichten aus einem Service Bus-Abonnement veranschaulicht. Der Empfangsvorgang wird zurückgegeben, wenn entweder 10 Nachrichten empfangen oder 30 Sekunden verstrichen sind. Standardmäßig werden Nachrichten mit PEEK_LOCK empfangen, und Kunden müssen ihre Nachrichten mit einer der Abrechnungsmethoden auf dem Empfängerclient abgleichen. " Abgleich von Empfangsvorgängen" enthält zusätzliche Informationen zur Nachrichtenabrechnung.
TokenCredential tokenCredential = new DefaultAzureCredentialBuilder().build();
// 'fullyQualifiedNamespace' will look similar to "{your-namespace}.servicebus.windows.net"
ServiceBusReceiverClient receiver = new ServiceBusClientBuilder()
.credential(fullyQualifiedNamespace, tokenCredential)
.receiver()
.topicName(topicName)
.subscriptionName(subscriptionName)
.buildClient();
// Receives a batch of messages when 10 messages are received or until 30 seconds have elapsed, whichever
// happens first.
IterableStream<ServiceBusReceivedMessage> messages = receiver.receiveMessages(10, Duration.ofSeconds(30));
messages.forEach(message -> {
System.out.printf("Id: %s. Contents: %s%n", message.getMessageId(), message.getBody());
// If able to process message, complete it. Otherwise, abandon it and allow it to be
// redelivered.
if (isMessageProcessed) {
receiver.complete(message);
} else {
receiver.abandon(message);
}
});
// When program ends, or you're done receiving all messages, dispose of the receiver.
// Clients should be long-lived objects as they
// require resources and time to establish a connection to the service.
receiver.close();
Methodenzusammenfassung
Modifizierer und Typ | Methode und Beschreibung |
---|---|
void |
abandon(ServiceBusReceivedMessage message)
Gibt ein auf ServiceBusReceivedMessage. |
void |
abandon(ServiceBusReceivedMessage message, AbandonOptions options)
Gibt eine auf ServiceBusReceivedMessage und aktualisiert die Eigenschaften der Nachricht. |
void |
close()
Entsorgt den Consumer, indem die zugrunde liegenden Links zum Dienst geschlossen werden. |
void |
commitTransaction(ServiceBusTransactionContext transactionContext)
Committent die Transaktion und alle ihr zugeordneten Vorgänge. |
void |
complete(ServiceBusReceivedMessage message)
Schließt eine ab ServiceBusReceivedMessage. |
void |
complete(ServiceBusReceivedMessage message, CompleteOptions options)
Schließt eine ab ServiceBusReceivedMessage. |
Service |
createTransaction()
Startet eine neue Transaktion in Service Bus. |
void |
deadLetter(ServiceBusReceivedMessage message)
Verschiebt eine ServiceBusReceivedMessage in die Unterwarteschlange für unzustellbare Nachrichten. |
void |
deadLetter(ServiceBusReceivedMessage message, DeadLetterOptions options)
Verschiebt eine ServiceBusReceivedMessage in die Unterwarteschlange für unzustellbare Nachrichten mit Ursache für unzustellbare Nachrichten, Fehlerbeschreibung und/oder geänderten Eigenschaften. |
void |
defer(ServiceBusReceivedMessage message)
Verschiebt einen ServiceBusReceivedMessagezurück. |
void |
defer(ServiceBusReceivedMessage message, DeferOptions options)
Zurückstellen eines mithilfe ServiceBusReceivedMessage des Sperrtokens mit geänderter Nachrichteneigenschaft. |
String |
getEntityPath()
Ruft die Service Bus-Ressource ab, mit der dieser Client interagiert. |
String |
getFullyQualifiedNamespace()
Ruft den vollqualifizierten Service Bus-Namespace ab, dem die Verbindung zugeordnet ist. |
String |
getIdentifier()
Ruft den Bezeichner des instance von abServiceBusReceiverClient. |
String |
getSessionId()
Ruft die Sitzungs-ID |
byte[] |
getSessionState()
Ruft den Zustand der Sitzung ab, wenn dieser Empfänger ein Sitzungsempfänger ist. |
Service |
peekMessage()
Liest die nächste aktive Nachricht, ohne den Status des Empfängers oder der Nachrichtenquelle zu ändern. |
Service |
peekMessage(long sequenceNumber)
Ab der angegebenen Sequenznummer liest neben der aktiven Nachricht, ohne den Status des Empfängers oder der Nachrichtenquelle zu ändern. |
Iterable |
peekMessages(int maxMessages)
Liest den nächsten Batch mit aktiven Nachrichten, ohne den Status des Empfängers oder der Nachrichtenquelle zu ändern. |
Iterable |
peekMessages(int maxMessages, long sequenceNumber)
Liest ab der angegebenen Sequenznummer den nächsten Batch aktiver Nachrichten, ohne den Status des Empfängers oder der Nachrichtenquelle zu ändern. |
Service |
receiveDeferredMessage(long sequenceNumber)
Empfängt eine verzögerte ServiceBusReceivedMessage. |
Iterable |
receiveDeferredMessageBatch(Iterable<Long> sequenceNumbers)
Empfängt einen Batch mit verzögertem ServiceBusReceivedMessage. |
Iterable |
receiveMessages(int maxMessages)
Empfängt einen iterierbaren Stream von von ServiceBusReceivedMessage der Service Bus-Entität. |
Iterable |
receiveMessages(int maxMessages, Duration maxWaitTime)
Empfängt einen iterierbaren Stream von von ServiceBusReceivedMessage der Service Bus-Entität. |
Offset |
renewMessageLock(ServiceBusReceivedMessage message)
Erneuert die Sperre für die angegebene Nachricht. |
void |
renewMessageLock(ServiceBusReceivedMessage message, Duration maxLockRenewalDuration, Consumer<Throwable> onError)
Startet die automatische Sperrverlängerung für eine Nachricht mit der angegebenen Sperre. |
Offset |
renewSessionLock()
Legt den Zustand der Sitzung fest, wenn es sich bei diesem Empfänger um einen Sitzungsempfänger handelt. |
void |
renewSessionLock(Duration maxLockRenewalDuration, Consumer<Throwable> onError)
Startet die Verlängerung der automatischen Sperre für die Sitzung, für die dieser Empfänger arbeitet. |
void |
rollbackTransaction(ServiceBusTransactionContext transactionContext)
Rollbacks für die angegebene Transaktion und alle ihr zugeordneten Vorgänge. |
void |
setSessionState(byte[] sessionState)
Legt den Zustand der Sitzung fest, wenn es sich bei diesem Empfänger um einen Sitzungsempfänger handelt. |
Geerbte Methoden von java.lang.Object
Details zur Methode
abandon
public void abandon(ServiceBusReceivedMessage message)
Gibt ein auf ServiceBusReceivedMessage. Dadurch wird die Nachricht wieder zur Verarbeitung zur Verfügung gestellt. Wenn Sie eine Nachricht verlassen, erhöht sich die Anzahl der Zustellungen für die Nachricht.
Parameters:
abandon
public void abandon(ServiceBusReceivedMessage message, AbandonOptions options)
Gibt eine auf ServiceBusReceivedMessage und aktualisiert die Eigenschaften der Nachricht. Dadurch wird die Nachricht wieder zur Verarbeitung zur Verfügung gestellt. Wenn Sie eine Nachricht verlassen, erhöht sich die Anzahl der Zustellungen für die Nachricht.
Parameters:
close
public void close()
Entsorgt den Consumer, indem die zugrunde liegenden Links zum Dienst geschlossen werden.
commitTransaction
public void commitTransaction(ServiceBusTransactionContext transactionContext)
Committent die Transaktion und alle ihr zugeordneten Vorgänge.
Erstellen und Verwenden einer Transaktion
ServiceBusTransactionContext transaction = receiver.createTransaction();
// Process messages and associate operations with the transaction.
ServiceBusReceivedMessage deferredMessage = receiver.receiveDeferredMessage(sequenceNumber);
receiver.complete(deferredMessage, new CompleteOptions().setTransactionContext(transaction));
receiver.abandon(receivedMessage, new AbandonOptions().setTransactionContext(transaction));
receiver.commitTransaction(transaction);
Parameters:
complete
public void complete(ServiceBusReceivedMessage message)
Schließt eine ab ServiceBusReceivedMessage. Dadurch wird die Nachricht aus dem Dienst gelöscht.
Parameters:
complete
public void complete(ServiceBusReceivedMessage message, CompleteOptions options)
Schließt eine ab ServiceBusReceivedMessage. Dadurch wird die Nachricht aus dem Dienst gelöscht.
Parameters:
createTransaction
public ServiceBusTransactionContext createTransaction()
Startet eine neue Transaktion in Service Bus. Sollte ServiceBusTransactionContext an alle Vorgänge übergeben werden, die in dieser Transaktion erforderlich sind.
Beispiel: Erstellen und Verwenden einer Transaktion
ServiceBusTransactionContext transaction = receiver.createTransaction();
// Process messages and associate operations with the transaction.
ServiceBusReceivedMessage deferredMessage = receiver.receiveDeferredMessage(sequenceNumber);
receiver.complete(deferredMessage, new CompleteOptions().setTransactionContext(transaction));
receiver.abandon(receivedMessage, new AbandonOptions().setTransactionContext(transaction));
receiver.commitTransaction(transaction);
Returns:
deadLetter
public void deadLetter(ServiceBusReceivedMessage message)
Verschiebt eine ServiceBusReceivedMessage in die Unterwarteschlange für unzustellbare Nachrichten.
Parameters:
deadLetter
public void deadLetter(ServiceBusReceivedMessage message, DeadLetterOptions options)
Verschiebt eine ServiceBusReceivedMessage in die Unterwarteschlange für unzustellbare Nachrichten mit Ursache für unzustellbare Nachrichten, Fehlerbeschreibung und/oder geänderten Eigenschaften.
Parameters:
defer
public void defer(ServiceBusReceivedMessage message)
Verschiebt einen ServiceBusReceivedMessagezurück. Dadurch wird die Nachricht in die verzögerte Unterwarteschlange verschoben.
Parameters:
defer
public void defer(ServiceBusReceivedMessage message, DeferOptions options)
Zurückstellen eines mithilfe ServiceBusReceivedMessage des Sperrtokens mit geänderter Nachrichteneigenschaft. Dadurch wird die Nachricht in die verzögerte Untergeordnete Warteschlange verschoben.
Parameters:
getEntityPath
public String getEntityPath()
Ruft die Service Bus-Ressource ab, mit der dieser Client interagiert.
Returns:
getFullyQualifiedNamespace
public String getFullyQualifiedNamespace()
Ruft den vollqualifizierten Service Bus-Namespace ab, dem die Verbindung zugeordnet ist. Dies ist wahrscheinlich ähnlich wie .{yournamespace}.servicebus.windows.net
Returns:
getIdentifier
public String getIdentifier()
Ruft den Bezeichner des instance von abServiceBusReceiverClient.
Returns:
getSessionId
public String getSessionId()
Ruft die SessionId der Sitzung ab, wenn dieser Empfänger ein Sitzungsempfänger ist.
Returns:
getSessionState
public byte[] getSessionState()
Ruft den Zustand der Sitzung ab, wenn dieser Empfänger ein Sitzungsempfänger ist.
Returns:
peekMessage
public ServiceBusReceivedMessage peekMessage()
Liest die nächste aktive Nachricht, ohne den Status des Empfängers oder der Nachrichtenquelle zu ändern. Der erste Aufruf von ruft peekMessage()
die erste aktive Nachricht für diesen Empfänger ab. Jeder nachfolgende Aufruf ruft die nachfolgende Nachricht in der Entität ab.
Returns:
peekMessage
public ServiceBusReceivedMessage peekMessage(long sequenceNumber)
Ab der angegebenen Sequenznummer liest neben der aktiven Nachricht, ohne den Status des Empfängers oder der Nachrichtenquelle zu ändern.
Parameters:
Returns:
peekMessages
public IterableStream
Liest den nächsten Batch mit aktiven Nachrichten, ohne den Status des Empfängers oder der Nachrichtenquelle zu ändern.
Parameters:
Returns:
peekMessages
public IterableStream
Liest ab der angegebenen Sequenznummer den nächsten Batch aktiver Nachrichten, ohne den Status des Empfängers oder der Nachrichtenquelle zu ändern.
Parameters:
Returns:
receiveDeferredMessage
public ServiceBusReceivedMessage receiveDeferredMessage(long sequenceNumber)
Empfängt eine verzögerte ServiceBusReceivedMessage. Verzögerte Nachrichten können nur mithilfe der Sequenznummer empfangen werden.
Parameters:
Returns:
sequenceNumber
.receiveDeferredMessageBatch
public IterableStream
Empfängt einen Batch mit verzögertem ServiceBusReceivedMessage. Verzögerte Nachrichten können nur mithilfe der Sequenznummer empfangen werden.
Parameters:
Returns:
receiveMessages
public IterableStream
Empfängt einen iterierbaren Stream von von ServiceBusReceivedMessage der Service Bus-Entität. Der Empfangsvorgang wartet standardmäßig 1 Minute auf den Empfang einer Nachricht, bevor ein Timeout auftritt. Sie können es überschreiben, indem Sie verwenden receiveMessages(int maxMessages, Duration maxWaitTime).
Der Client verwendet einen AMQP-Link darunter, um die Nachrichten zu empfangen. Der Client wechselt transparent zu einem neuen AMQP-Link, wenn für den aktuellen ein wiederholbarer Fehler auftritt. Wenn auf dem Client ein nicht wiederholbarer Fehler auftritt oder die Wiederholungsversuche erschöpft sind, löst die Iteration (z. B. forEach) für den IterableStream<T> durch die weiteren Aufrufe der receiveMessages-API zurückgegebenen den Fehler an die Anwendung aus. Sobald die Anwendung diesen Fehler empfängt, sollte die Anwendung den Client zurücksetzen, d. h. den aktuellen ServiceBusReceiverClient schließen und einen neuen Client erstellen, um weiterhin Nachrichten zu empfangen.
Hinweis: Einige Beispiele für nicht wiederholbare Fehler sind: Die Anwendung versucht, eine Verbindung mit einer Warteschlange herzustellen, die nicht vorhanden ist, das Löschen oder Deaktivieren der Warteschlange in der Mitte des Empfangs, der Benutzer initiiert explizit geo-DR. Dies sind bestimmte Ereignisse, bei denen Service Bus dem Client mitgeteilt, dass ein nicht wiederholbarer Fehler aufgetreten ist.
Parameters:
Returns:
maxMessages
Nachrichten der Service Bus-Entität.receiveMessages
public IterableStream
Empfängt einen iterierbaren Stream von von ServiceBusReceivedMessage der Service Bus-Entität. Der Standard-Empfangsmodus ist PEEK_LOCK es, es sei denn, er wird während der Erstellung von ServiceBusReceiverClient mit ServiceBusReceiverClientBuilder#receiveMode(ServiceBusReceiveMode)geändert.
Der Client verwendet einen AMQP-Link darunter, um die Nachrichten zu empfangen. Der Client wechselt transparent zu einem neuen AMQP-Link, wenn für den aktuellen ein wiederholbarer Fehler auftritt. Wenn auf dem Client ein nicht wiederholbarer Fehler auftritt oder die Wiederholungsversuche erschöpft sind, löst die Iteration (z. B. forEach) für den IterableStream<T> durch die weiteren Aufrufe der receiveMessages-API zurückgegebenen den Fehler an die Anwendung aus. Sobald die Anwendung diesen Fehler empfängt, sollte die Anwendung den Client zurücksetzen, d. h. den aktuellen ServiceBusReceiverClient schließen und einen neuen Client erstellen, um weiterhin Nachrichten zu empfangen.
Hinweis: Einige Beispiele für nicht wiederholbare Fehler sind: Die Anwendung versucht, eine Verbindung mit einer Warteschlange herzustellen, die nicht vorhanden ist, das Löschen oder Deaktivieren der Warteschlange in der Mitte des Empfangs, der Benutzer initiiert explizit geo-DR. Dies sind bestimmte Ereignisse, bei denen Service Bus dem Client mitgeteilt, dass ein nicht wiederholbarer Fehler aufgetreten ist.
Parameters:
Returns:
maxMessages
Nachrichten der Service Bus-Entität.renewMessageLock
public OffsetDateTime renewMessageLock(ServiceBusReceivedMessage message)
Erneuert die Sperre für die angegebene Nachricht. Die Sperre wird basierend auf der für die Entität angegebenen Einstellung verlängert. Wenn eine Nachricht im PEEK_LOCK Modus empfangen wird, wird die Nachricht auf dem Server für diesen Empfänger instance für einen Zeitraum gesperrt, der während der Erstellung der Warteschlange angegeben wurde (LockDuration). Wenn die Verarbeitung der Nachricht länger als diese Dauer erfordert, muss die Sperre verlängert werden. Bei jeder Verlängerung wird die Sperre auf den LockDuration-Wert der Entität zurückgesetzt.
Parameters:
Returns:
renewMessageLock
public void renewMessageLock(ServiceBusReceivedMessage message, Duration maxLockRenewalDuration, Consumer
Startet die automatische Sperrverlängerung für eine Nachricht mit der angegebenen Sperre.
Parameters:
renewSessionLock
public OffsetDateTime renewSessionLock()
Legt den Zustand der Sitzung fest, wenn dieser Empfänger ein Sitzungsempfänger ist.
Returns:
renewSessionLock
public void renewSessionLock(Duration maxLockRenewalDuration, Consumer
Startet die Verlängerung der automatischen Sperre für die Sitzung, für die dieser Empfänger arbeitet.
Parameters:
rollbackTransaction
public void rollbackTransaction(ServiceBusTransactionContext transactionContext)
Rollbacks für die angegebene Transaktion und alle ihr zugeordneten Vorgänge.
Erstellen und Verwenden einer Transaktion
ServiceBusTransactionContext transaction = receiver.createTransaction();
// Process messages and associate operations with the transaction.
ServiceBusReceivedMessage deferredMessage = receiver.receiveDeferredMessage(sequenceNumber);
receiver.complete(deferredMessage, new CompleteOptions().setTransactionContext(transaction));
receiver.abandon(receivedMessage, new AbandonOptions().setTransactionContext(transaction));
receiver.commitTransaction(transaction);
Parameters:
setSessionState
public void setSessionState(byte[] sessionState)
Legt den Zustand der Sitzung fest, wenn es sich bei diesem Empfänger um einen Sitzungsempfänger handelt.
Parameters:
Gilt für:
Azure SDK for Java