Partager via


ServiceBusReceiverClient Classe

  • java.lang.Object
    • com.azure.messaging.servicebus.ServiceBusReceiverClient

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

ServiceBusTransactionContext 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 sessionde la session si ce récepteur est un récepteur de session.

byte[] getSessionState()

Obtient l’état de la session si ce récepteur est un récepteur de session.

ServiceBusReceivedMessage peekMessage()

Lit le message actif suivant sans modifier l’état du récepteur ou de la source du message.

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.

IterableStream<ServiceBusReceivedMessage> peekMessages(int maxMessages)

Lit le lot suivant de messages actifs sans modifier l’état du récepteur ou de la source du message.

IterableStream<ServiceBusReceivedMessage> 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.

ServiceBusReceivedMessage receiveDeferredMessage(long sequenceNumber)

Reçoit un différé ServiceBusReceivedMessage.

IterableStream<ServiceBusReceivedMessage> receiveDeferredMessageBatch(Iterable<Long> sequenceNumbers)

Reçoit un lot de ServiceBusReceivedMessage.

IterableStream<ServiceBusReceivedMessage> receiveMessages(int maxMessages)

Reçoit un flux itérable de ServiceBusReceivedMessage de l’entité Service Bus.

IterableStream<ServiceBusReceivedMessage> receiveMessages(int maxMessages, Duration maxWaitTime)

Reçoit un flux itérable de ServiceBusReceivedMessage de l’entité Service Bus.

OffsetDateTime 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é.

OffsetDateTime 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:

message - ServiceBusReceivedMessage pour effectuer cette opération.

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:

message - ServiceBusReceivedMessage pour effectuer cette opération.
options - Options à définir lors de l’abandon du message.

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:

transactionContext - Transaction à valider.

complete

public void complete(ServiceBusReceivedMessage message)

Termine un .ServiceBusReceivedMessage Cela supprime le message du service.

Parameters:

message - ServiceBusReceivedMessage pour effectuer cette opération.

complete

public void complete(ServiceBusReceivedMessage message, CompleteOptions options)

Termine un .ServiceBusReceivedMessage Cela supprime le message du service.

Parameters:

message - ServiceBusReceivedMessage pour effectuer cette opération.
options - Options utilisées pour terminer le message.

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:

message - ServiceBusReceivedMessage pour effectuer cette opération.

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:

message - ServiceBusReceivedMessage pour effectuer cette opération.
options - Options utilisées pour mettre en lettres mortes le message.

defer

public void defer(ServiceBusReceivedMessage message)

Reporte un ServiceBusReceivedMessage. Cela déplacera le message dans la sous-file d’attente différée.

Parameters:

message - ServiceBusReceivedMessage pour effectuer cette opération.

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:

message - ServiceBusReceivedMessage pour effectuer cette opération.
options - Options utilisées pour différer le message.

getEntityPath

public String getEntityPath()

Obtient la ressource Service Bus avec laquelle ce client interagit.

Returns:

Ressource Service Bus avec laquelle ce client interagit.

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:

Espace de noms Service Bus complet auquel la connexion est associée.

getIdentifier

public String getIdentifier()

Obtient l’identificateur du instance de ServiceBusReceiverClient.

Returns:

Identificateur qui peut identifier le instance de ServiceBusReceiverClient.

getSessionId

public String getSessionId()

Obtient le SessionId de la session si ce récepteur est un récepteur de session.

Returns:

SessionId ou null s’il ne s’agit pas d’un récepteur de session.

getSessionState

public byte[] getSessionState()

Obtient l’état de la session si ce récepteur est un récepteur de session.

Returns:

État de session ou null s’il n’y a pas d’état défini pour la session.

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:

sequenceNumber - Numéro de séquence à partir duquel lire le message.

Returns:

peekMessages

public IterableStream peekMessages(int maxMessages)

Lit le lot suivant de messages actifs sans modifier l’état du récepteur ou de la source du message.

Parameters:

maxMessages - Nombre maximal de messages à lire.

Returns:

peekMessages

public IterableStream 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.

Parameters:

maxMessages - Nombre de messages.
sequenceNumber - Numéro de séquence à partir duquel commencer la lecture des messages.

Returns:

Un IterableStream<T> de ServiceBusReceivedMessage jeter un coup d’œil.

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:

sequenceNumber - getSequenceNumber() du message.

Returns:

Message différé avec la correspondance sequenceNumber.

receiveDeferredMessageBatch

public IterableStream receiveDeferredMessageBatch(Iterable sequenceNumbers)

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:

sequenceNumbers - Numéros de séquence des messages différés.

Returns:

receiveMessages

public IterableStream receiveMessages(int maxMessages)

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:

maxMessages - Nombre maximal de messages à recevoir.

Returns:

d’au IterableStream<T> plus maxMessages des messages de l’entité Service Bus.

receiveMessages

public IterableStream receiveMessages(int maxMessages, Duration maxWaitTime)

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:

maxMessages - Nombre maximal de messages à recevoir.
maxWaitTime - Heure à laquelle le client attend la réception d’un message avant d’expirer.

Returns:

d’au IterableStream<T> plus 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:

message - pour effectuer le renouvellement de ServiceBusReceivedMessage verrou.

Returns:

Nouvelle heure d’expiration du message.

renewMessageLock

public void renewMessageLock(ServiceBusReceivedMessage message, Duration maxLockRenewalDuration, Consumer onError)

Démarre le renouvellement du verrouillage automatique pour un message avec le verrou donné.

Parameters:

message - pour effectuer le ServiceBusReceivedMessage renouvellement de verrouillage automatique.
maxLockRenewalDuration - Durée maximale pour continuer à renouveler le jeton de verrouillage.
onError - Fonction à appeler lorsqu’une erreur se produit lors du renouvellement du verrou.

renewSessionLock

public OffsetDateTime renewSessionLock()

Définit l’état de la session si ce récepteur est un récepteur de session.

Returns:

Heure d’expiration suivante pour le verrou de session.

renewSessionLock

public void renewSessionLock(Duration maxLockRenewalDuration, Consumer onError)

Démarre le renouvellement du verrouillage automatique pour la session pour laquelle ce récepteur fonctionne.

Parameters:

maxLockRenewalDuration - Durée maximale de renouvellement de la session.
onError - Fonction à appeler lorsqu’une erreur se produit lors du renouvellement du verrou.

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:

transactionContext - Transaction à restaurer.

setSessionState

public void setSessionState(byte[] sessionState)

Définit l’état de la session si ce récepteur est un récepteur de session.

Parameters:

sessionState - État à définir sur la session.

S’applique à