ServiceBusReceiverClient Classe
- java.
lang. Object - com.
azure. messaging. servicebus. ServiceBusReceiverClient
- com.
Implémente
public final class ServiceBusReceiverClient
implements AutoCloseable
Récepteur synchrone responsable de la réception d’une file d’attente ServiceBusReceivedMessage ou d’une rubrique/abonnement sur Azure Service Bus.
Les exemples présentés dans ce document utilisent un objet d’informations d’identification nommé DefaultAzureCredential pour l’authentification, ce qui est approprié pour la plupart des scénarios, y compris les environnements de développement et de production locaux. En outre, nous vous recommandons d’utiliser l’identité managée pour l’authentification dans les environnements de production. Vous trouverez plus d’informations sur les différentes méthodes d’authentification et leurs types d’informations d’identification correspondants dans la documentation Azure Identity .
Exemple : Créer un récepteur et recevoir des messages
L’exemple de code suivant illustre la création et l’utilisation du client ServiceBusReceiverClient synchrone pour recevoir des messages à partir d’un abonnement Service Bus. L’opération de réception retourne lorsque 10 messages sont reçus ou que 30 secondes se sont écoulées. Par défaut, les messages sont reçus à l’aide PEEK_LOCK de et les clients doivent régler leurs messages à l’aide de l’une des méthodes de règlement sur le client récepteur. « Settling receive operations » fournit des informations supplémentaires sur le règlement des messages.
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();
Résumé de la méthode
Modificateur et type | Méthode et description |
---|---|
void |
abandon(ServiceBusReceivedMessage message)
Abandonne un ServiceBusReceivedMessage. |
void |
abandon(ServiceBusReceivedMessage message, AbandonOptions options)
Abandonne un ServiceBusReceivedMessage et met à jour les propriétés du message. |
void |
close()
Élimine le consommateur en fermant les liens sous-jacents au service. |
void |
commitTransaction(ServiceBusTransactionContext transactionContext)
Valide la transaction et toutes les opérations qui lui sont associées. |
void |
complete(ServiceBusReceivedMessage message)
Termine un .ServiceBusReceivedMessage |
void |
complete(ServiceBusReceivedMessage message, CompleteOptions options)
Termine un .ServiceBusReceivedMessage |
Service |
createTransaction()
Démarre une nouvelle transaction sur Service Bus. |
void |
deadLetter(ServiceBusReceivedMessage message)
Déplace un ServiceBusReceivedMessage vers la sous-file d’attente de lettres mortes. |
void |
deadLetter(ServiceBusReceivedMessage message, DeadLetterOptions options)
Déplace un ServiceBusReceivedMessage vers la sous-file d’attente de lettres mortes avec la raison des lettres mortes, la description de l’erreur et/ou les propriétés modifiées. |
void |
defer(ServiceBusReceivedMessage message)
Reporte un ServiceBusReceivedMessage. |
void |
defer(ServiceBusReceivedMessage message, DeferOptions options)
Reporte un à l’aide ServiceBusReceivedMessage de son jeton de verrouillage avec la propriété de message modifiée. |
String |
getEntityPath()
Obtient la ressource Service Bus avec laquelle ce client interagit. |
String |
getFullyQualifiedNamespace()
Obtient l’espace de noms Service Bus complet auquel la connexion est associée. |
String |
getIdentifier()
Obtient l’identificateur du instance de ServiceBusReceiverClient. |
String |
getSessionId()
Obtient l’ID de session |
byte[] |
getSessionState()
Obtient l’état de la session si ce récepteur est un récepteur de session. |
Service |
peekMessage()
Lit le message actif suivant sans modifier l’état du récepteur ou de la source du message. |
Service |
peekMessage(long sequenceNumber)
À partir du numéro de séquence donné, lit ensuite le message actif sans modifier l’état du récepteur ou de la source du message. |
Iterable |
peekMessages(int maxMessages)
Lit le lot suivant de messages actifs sans modifier l’état du récepteur ou de la source du message. |
Iterable |
peekMessages(int maxMessages, long sequenceNumber)
À partir du numéro de séquence donné, lit le lot suivant de messages actifs sans modifier l’état du récepteur ou de la source du message. |
Service |
receiveDeferredMessage(long sequenceNumber)
Reçoit un différé ServiceBusReceivedMessage. |
Iterable |
receiveDeferredMessageBatch(Iterable<Long> sequenceNumbers)
Reçoit un lot de ServiceBusReceivedMessage. |
Iterable |
receiveMessages(int maxMessages)
Reçoit un flux itérable de ServiceBusReceivedMessage de l’entité Service Bus. |
Iterable |
receiveMessages(int maxMessages, Duration maxWaitTime)
Reçoit un flux itérable de ServiceBusReceivedMessage de l’entité Service Bus. |
Offset |
renewMessageLock(ServiceBusReceivedMessage message)
Renouvelle le verrou sur le message spécifié. |
void |
renewMessageLock(ServiceBusReceivedMessage message, Duration maxLockRenewalDuration, Consumer<Throwable> onError)
Démarre le renouvellement du verrouillage automatique pour un message avec le verrou donné. |
Offset |
renewSessionLock()
Définit l’état de la session si ce récepteur est un récepteur de session. |
void |
renewSessionLock(Duration maxLockRenewalDuration, Consumer<Throwable> onError)
Démarre le renouvellement du verrouillage automatique pour la session pour laquelle ce récepteur fonctionne. |
void |
rollbackTransaction(ServiceBusTransactionContext transactionContext)
Restaure la transaction donnée et toutes les opérations qui lui sont associées. |
void |
setSessionState(byte[] sessionState)
Définit l’état de la session si ce récepteur est un récepteur de session. |
Méthodes héritées de java.lang.Object
Détails de la méthode
abandon
public void abandon(ServiceBusReceivedMessage message)
Abandonne un ServiceBusReceivedMessage. Cela rend le message à nouveau disponible pour traitement. L’abandon d’un message augmente le nombre de remises sur le message.
Parameters:
abandon
public void abandon(ServiceBusReceivedMessage message, AbandonOptions options)
Abandonne un ServiceBusReceivedMessage et met à jour les propriétés du message. Cela rend le message à nouveau disponible pour traitement. L’abandon d’un message augmente le nombre de remises sur le message.
Parameters:
close
public void close()
Élimine le consommateur en fermant les liens sous-jacents au service.
commitTransaction
public void commitTransaction(ServiceBusTransactionContext transactionContext)
Valide la transaction et toutes les opérations qui lui sont associées.
Création et utilisation d’une transaction
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)
Termine un .ServiceBusReceivedMessage Cela supprime le message du service.
Parameters:
complete
public void complete(ServiceBusReceivedMessage message, CompleteOptions options)
Termine un .ServiceBusReceivedMessage Cela supprime le message du service.
Parameters:
createTransaction
public ServiceBusTransactionContext createTransaction()
Démarre une nouvelle transaction sur Service Bus. Le ServiceBusTransactionContext doit être transmis à toutes les opérations qui doivent se trouver dans cette transaction.
Exemple : création et utilisation d’une transaction
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)
Déplace un ServiceBusReceivedMessage vers la sous-file d’attente de lettres mortes.
Parameters:
deadLetter
public void deadLetter(ServiceBusReceivedMessage message, DeadLetterOptions options)
Déplace un ServiceBusReceivedMessage vers la sous-file d’attente de lettres mortes avec la raison des lettres mortes, la description de l’erreur et/ou les propriétés modifiées.
Parameters:
defer
public void defer(ServiceBusReceivedMessage message)
Reporte un ServiceBusReceivedMessage. Cela déplacera le message dans la sous-file d’attente différée.
Parameters:
defer
public void defer(ServiceBusReceivedMessage message, DeferOptions options)
Reporte un à l’aide ServiceBusReceivedMessage de son jeton de verrouillage avec la propriété de message modifiée. Cela déplacera le message dans la sous-file d’attente différée.
Parameters:
getEntityPath
public String getEntityPath()
Obtient la ressource Service Bus avec laquelle ce client interagit.
Returns:
getFullyQualifiedNamespace
public String getFullyQualifiedNamespace()
Obtient l’espace de noms Service Bus complet auquel la connexion est associée. Cela est probablement similaire à {yournamespace}.servicebus.windows.net
.
Returns:
getIdentifier
public String getIdentifier()
Obtient l’identificateur du instance de ServiceBusReceiverClient.
Returns:
getSessionId
public String getSessionId()
Obtient le SessionId de la session si ce récepteur est un récepteur de session.
Returns:
getSessionState
public byte[] getSessionState()
Obtient l’état de la session si ce récepteur est un récepteur de session.
Returns:
peekMessage
public ServiceBusReceivedMessage peekMessage()
Lit le message actif suivant sans modifier l’état du récepteur ou de la source du message. Le premier appel à peekMessage()
extraire le premier message actif pour ce récepteur. Chaque appel suivant extrait le message suivant dans l’entité.
Returns:
peekMessage
public ServiceBusReceivedMessage peekMessage(long sequenceNumber)
À partir du numéro de séquence donné, lit ensuite le message actif sans modifier l’état du récepteur ou de la source du message.
Parameters:
Returns:
peekMessages
public IterableStream
Lit le lot suivant de messages actifs sans modifier l’état du récepteur ou de la source du message.
Parameters:
Returns:
peekMessages
public IterableStream
À partir du numéro de séquence donné, lit le lot suivant de messages actifs sans modifier l’état du récepteur ou de la source du message.
Parameters:
Returns:
receiveDeferredMessage
public ServiceBusReceivedMessage receiveDeferredMessage(long sequenceNumber)
Reçoit un différé ServiceBusReceivedMessage. Les messages différés ne peuvent être reçus qu’à l’aide du numéro de séquence.
Parameters:
Returns:
sequenceNumber
.receiveDeferredMessageBatch
public IterableStream
Reçoit un lot de ServiceBusReceivedMessage. Les messages différés ne peuvent être reçus qu’à l’aide du numéro de séquence.
Parameters:
Returns:
receiveMessages
public IterableStream
Reçoit un flux itérable de ServiceBusReceivedMessage de l’entité Service Bus. L’opération de réception attend une minute par défaut pour recevoir un message avant d’expirer. Vous pouvez le remplacer à l’aide de receiveMessages(int maxMessages, Duration maxWaitTime).
Le client utilise un lien AMQP en dessous pour recevoir les messages ; le client effectue une transition transparente vers un nouveau lien AMQP si le client actuel rencontre une erreur pouvant être retentée. Lorsque le client rencontre une erreur non retenable ou épuise les nouvelles tentatives, l’itération (par exemple, forEach) sur le IterableStream<T> retourné par les appels supplémentaires de l’API receiveMessages lève l’erreur sur l’application. Une fois que l’application reçoit cette erreur, l’application doit réinitialiser le client, c’est-à-dire fermer le client actuel ServiceBusReceiverClient et créer un nouveau client pour continuer à recevoir des messages.
Remarque : voici quelques exemples d’erreurs non retriables : l’application qui tente de se connecter à une file d’attente qui n’existe pas, supprime ou désactive la file d’attente au milieu de la réception, l’utilisateur lançant explicitement Geo-DR. Il s’agit de certains événements où Service Bus indique au client qu’une erreur non retenable s’est produite.
Parameters:
Returns:
maxMessages
des messages de l’entité Service Bus.receiveMessages
public IterableStream
Reçoit un flux itérable de ServiceBusReceivedMessage de l’entité Service Bus. Le mode de réception par défaut est PEEK_LOCK sauf s’il est modifié lors de la création de l’utilisation ServiceBusReceiverClientBuilder#receiveMode(ServiceBusReceiveMode)de ServiceBusReceiverClient .
Le client utilise un lien AMQP en dessous pour recevoir les messages ; le client effectue une transition transparente vers un nouveau lien AMQP si le client actuel rencontre une erreur pouvant être retentée. Lorsque le client rencontre une erreur non retenable ou épuise les nouvelles tentatives, l’itération (par exemple, forEach) sur le IterableStream<T> retourné par les appels supplémentaires de l’API receiveMessages lève l’erreur sur l’application. Une fois que l’application reçoit cette erreur, l’application doit réinitialiser le client, c’est-à-dire fermer le client actuel ServiceBusReceiverClient et créer un nouveau client pour continuer à recevoir des messages.
Remarque : voici quelques exemples d’erreurs non retriables : l’application qui tente de se connecter à une file d’attente qui n’existe pas, supprime ou désactive la file d’attente au milieu de la réception, l’utilisateur lançant explicitement Geo-DR. Il s’agit de certains événements où Service Bus indique au client qu’une erreur non retenable s’est produite.
Parameters:
Returns:
maxMessages
des messages de l’entité Service Bus.renewMessageLock
public OffsetDateTime renewMessageLock(ServiceBusReceivedMessage message)
Renouvelle le verrou sur le message spécifié. Le verrou est renouvelé en fonction du paramètre spécifié sur l’entité. Lorsqu’un message est reçu en PEEK_LOCK mode, le message est verrouillé sur le serveur pour ce récepteur instance pendant une durée spécifiée lors de la création de la file d’attente (LockDuration). Si le traitement du message nécessite une durée supérieure à cette durée, le verrou doit être renouvelé. Pour chaque renouvellement, le verrou est réinitialisé à la valeur LockDuration de l’entité.
Parameters:
Returns:
renewMessageLock
public void renewMessageLock(ServiceBusReceivedMessage message, Duration maxLockRenewalDuration, Consumer
Démarre le renouvellement du verrouillage automatique pour un message avec le verrou donné.
Parameters:
renewSessionLock
public OffsetDateTime renewSessionLock()
Définit l’état de la session si ce récepteur est un récepteur de session.
Returns:
renewSessionLock
public void renewSessionLock(Duration maxLockRenewalDuration, Consumer
Démarre le renouvellement du verrouillage automatique pour la session pour laquelle ce récepteur fonctionne.
Parameters:
rollbackTransaction
public void rollbackTransaction(ServiceBusTransactionContext transactionContext)
Restaure la transaction donnée et toutes les opérations qui lui sont associées.
Création et utilisation d’une transaction
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)
Définit l’état de la session si ce récepteur est un récepteur de session.
Parameters:
S’applique à
Azure SDK for Java