ServiceBusSessionReceiverClient Classe
- java.
lang. Object - com.
azure. messaging. servicebus. ServiceBusSessionReceiverClient
- com.
Implémente
public final class ServiceBusSessionReceiverClient
implements AutoCloseable
Ce client récepteur de session synchrone est utilisé pour acquérir des verrous de session à partir d’une file d’attente ou d’une rubrique et créer ServiceBusReceiverClient des instances liées aux sessions verrouillées. Les sessions peuvent être utilisées comme traitement FIFO (first in first out) des messages. Les files d’attente et les rubriques/abonnements prennent en charge les sessions Service Bus. Toutefois, il doit être activé au moment de la création de l’entité.
Les exemples présentés dans ce document utilisent un objet d’informations d’identification nommé DefaultAzureCredential pour l’authentification, qui convient à la plupart des scénarios, notamment aux environnements de développement et de production locaux. En outre, nous vous recommandons d’utiliser une 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 : recevoir des messages d’une session spécifique
Utilisez acceptSession(String sessionId) pour acquérir le verrou d’une session si vous connaissez l’ID de session. PEEK_LOCK Il est vivement recommandé aux utilisateurs de contrôler le règlement des messages.
TokenCredential credential = new DefaultAzureCredentialBuilder().build();
// 'fullyQualifiedNamespace' will look similar to "{your-namespace}.servicebus.windows.net"
// 'disableAutoComplete' indicates that users will explicitly settle their message.
ServiceBusSessionReceiverClient sessionReceiver = new ServiceBusClientBuilder()
.credential(fullyQualifiedNamespace, credential)
.sessionReceiver()
.queueName(sessionEnabledQueueName)
.disableAutoComplete()
.buildClient();
ServiceBusReceiverClient receiver = sessionReceiver.acceptSession("<<my-session-id>>");
// Keep fetching messages from the session until there are no more messages.
// The receiveMessage operation returns when either 10 messages have been receiver or, 30 seconds have elapsed.
boolean hasMoreMessages = true;
while (hasMoreMessages) {
IterableStream<ServiceBusReceivedMessage> messages =
receiver.receiveMessages(10, Duration.ofSeconds(30));
Iterator<ServiceBusReceivedMessage> iterator = messages.iterator();
hasMoreMessages = iterator.hasNext();
while (iterator.hasNext()) {
ServiceBusReceivedMessage message = iterator.next();
System.out.printf("Session Id: %s. Contents: %s%n.", message.getSessionId(), message.getBody());
// Explicitly settle the message using complete, abandon, defer, dead-letter, etc.
if (isMessageProcessed) {
receiver.complete(message);
} else {
receiver.abandon(message);
}
}
}
// Use the receiver and finally close it along with the sessionReceiver.
receiver.close();
sessionReceiver.close();
Exemple : Recevoir des messages de la première session disponible
Utilisez acceptNextSession() pour acquérir le verrou de la session disponible suivante sans spécifier l’ID de session. PEEK_LOCK Il est vivement recommandé aux utilisateurs de contrôler le règlement des messages.
TokenCredential credential = new DefaultAzureCredentialBuilder().build();
// 'fullyQualifiedNamespace' will look similar to "{your-namespace}.servicebus.windows.net"
// 'disableAutoComplete' indicates that users will explicitly settle their message.
ServiceBusSessionReceiverClient sessionReceiver = new ServiceBusClientBuilder()
.credential(fullyQualifiedNamespace, credential)
.sessionReceiver()
.disableAutoComplete()
.queueName(sessionEnabledQueueName)
.buildClient();
// Creates a client to receive messages from the first available session. It waits until
// AmqpRetryOptions.getTryTimeout() elapses. If no session is available within that operation timeout, it
// throws a retriable error. Otherwise, a receiver is returned when a lock on the session is acquired.
ServiceBusReceiverClient receiver = sessionReceiver.acceptNextSession();
// Use the receiver and finally close it along with the sessionReceiver.
try {
// Keep fetching messages from the session until there are no more messages.
// The receiveMessage operation returns when either 10 messages have been receiver or, 30 seconds have elapsed.
boolean hasMoreMessages = true;
while (hasMoreMessages) {
IterableStream<ServiceBusReceivedMessage> messages =
receiver.receiveMessages(10, Duration.ofSeconds(30));
Iterator<ServiceBusReceivedMessage> iterator = messages.iterator();
hasMoreMessages = iterator.hasNext();
while (iterator.hasNext()) {
ServiceBusReceivedMessage message = iterator.next();
System.out.printf("Session Id: %s. Message: %s%n.", message.getSessionId(), message.getBody());
// Explicitly settle the message using complete, abandon, defer, dead-letter, etc.
if (isMessageProcessed) {
receiver.complete(message);
} else {
receiver.abandon(message);
}
}
}
} finally {
receiver.close();
sessionReceiver.close();
}
Résumé de la méthode
Modificateur et type | Méthode et description |
---|---|
Service |
acceptNextSession()
Acquiert un verrou de session pour la session disponible suivante et crée un ServiceBusReceiverClient pour recevoir des messages de la session. |
Service |
acceptSession(String sessionId)
Acquiert un verrou de session pour et crée un ServiceBusReceiverClient pour |
void | close() |
Méthodes héritées de java.lang.Object
Détails de la méthode
acceptNextSession
public ServiceBusReceiverClient acceptNextSession()
Acquiert un verrou de session pour la session disponible suivante et crée un ServiceBusReceiverClient pour recevoir des messages de la session. Il attend qu’une session soit disponible si personne n’est disponible immédiatement.
Returns:
acceptSession
public ServiceBusReceiverClient acceptSession(String sessionId)
Acquiert un verrou de session pour et crée un ServiceBusReceiverClient pour sessionId
recevoir des messages de la session. Si la session est déjà verrouillée par un autre client, une AmqpException est levée immédiatement.
Parameters:
Returns:
close
public void close()
S’applique à
Azure SDK for Java