ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder Classe
- java.
lang. Object - com.
azure. messaging. servicebus. ServiceBusClientBuilder. ServiceBusSessionProcessorClientBuilder
- com.
public final class ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder
Générateur de création ServiceBusProcessorClient pour consommer des messages à partir d’une entité Service Bus basée sur une session. ServiceBusProcessorClient traite les messages et les erreurs via processMessage(Consumer<ServiceBusReceivedMessageContext> processMessage) et processError(Consumer<ServiceBusErrorContext> processError). Lorsque le processeur termine le traitement d’une session, il tente d’extraire la session suivante à traiter.
Par défaut, le processeur :
- Règle automatiquement les messages. Désactivé via disableAutoComplete()
- Traite 1 session simultanément. Configuré via maxConcurrentSessions(int maxConcurrentSessions)
- Appelle 1 instance de processMessage(Consumer<ServiceBusReceivedMessageContext> processMessage). Configuré via maxConcurrentCalls(int maxConcurrentCalls)
Instancier un client de processeur activé pour la session
// Function that gets called whenever a message is received.
Consumer<ServiceBusReceivedMessageContext> onMessage = context -> {
ServiceBusReceivedMessage message = context.getMessage();
System.out.printf("Processing message. Session: %s, Sequence #: %s. Contents: %s%n",
message.getSessionId(), message.getSequenceNumber(), message.getBody());
};
Consumer<ServiceBusErrorContext> onError = context -> {
System.out.printf("Error when receiving messages from namespace: '%s'. Entity: '%s'%n",
context.getFullyQualifiedNamespace(), context.getEntityPath());
if (context.getException() instanceof ServiceBusException) {
ServiceBusException exception = (ServiceBusException) context.getException();
System.out.printf("Error source: %s, reason %s%n", context.getErrorSource(),
exception.getReason());
} else {
System.out.printf("Error occurred: %s%n", context.getException());
}
};
TokenCredential tokenCredential = new DefaultAzureCredentialBuilder().build();
// Create the processor client via the builder and its sub-builder
// 'fullyQualifiedNamespace' will look similar to "{your-namespace}.servicebus.windows.net"
ServiceBusProcessorClient sessionProcessor = new ServiceBusClientBuilder()
.credential(fullyQualifiedNamespace, tokenCredential)
.sessionProcessor()
.queueName(sessionEnabledQueueName)
.receiveMode(ServiceBusReceiveMode.PEEK_LOCK)
.disableAutoComplete()
.maxConcurrentSessions(2)
.processMessage(onMessage)
.processError(onError)
.buildProcessorClient();
// Starts the processor in the background. Control returns immediately.
sessionProcessor.start();
// Stop processor and dispose when done processing messages.
sessionProcessor.stop();
sessionProcessor.close();
Résumé de la méthode
Modificateur et type | Méthode et description |
---|---|
Service |
buildProcessorClient()
Crée un processeur Service Bus prenant en charge la session responsable de la lecture ServiceBusReceivedMessage à partir d’une file d’attente ou d’un abonnement spécifique. |
Service |
disableAutoComplete()
Désactive la saisie semi-automatique et l’abandon automatique des messages reçus. |
Service |
maxAutoLockRenewDuration(Duration maxAutoLockRenewDuration)
Définit la durée de la poursuite du renouvellement automatique du verrou. |
Service |
maxConcurrentCalls(int maxConcurrentCalls)
Nombre maximal de messages simultanés que ce processeur doit traiter. |
Service |
maxConcurrentSessions(int maxConcurrentSessions)
Active la substitution de traitement de session en traitant au maximum |
Service |
prefetchCount(int prefetchCount)
Définit le nombre de prérécupérations du processeur. |
Service |
processError(Consumer<ServiceBusErrorContext> processError)
Gestionnaire d’erreurs pour le processeur qui sera appelé en cas d’erreur lors de la réception de messages. |
Service |
processMessage(Consumer<ServiceBusReceivedMessageContext> processMessage)
Rappel de traitement des messages pour le processeur qui sera exécuté lors de la réception d’un message. |
Service |
queueName(String queueName)
Définit le nom de la file d’attente pour laquelle créer un processeur. |
Service |
receiveMode(ServiceBusReceiveMode receiveMode)
Définit le mode de réception du processeur. |
Service |
sessionIdleTimeout(Duration sessionIdleTimeout)
Définit la durée maximale d’attente de réception d’un message pour la session active. |
Service |
subQueue(SubQueue subQueue)
Définit le type de auquel SubQueue se connecter. |
Service |
subscriptionName(String subscriptionName)
Définit le nom de l’abonnement dans la rubrique à écouter. |
Service |
topicName(String topicName)
Définit le nom de la rubrique. |
Méthodes héritées de java.lang.Object
Détails de la méthode
buildProcessorClient
public ServiceBusProcessorClient buildProcessorClient()
Crée un processeur Service Bus prenant en charge la session responsable de la lecture ServiceBusReceivedMessage à partir d’une file d’attente ou d’un abonnement spécifique.
Returns:
disableAutoComplete
public ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder disableAutoComplete()
Désactive la saisie semi-automatique et l’abandon automatique des messages reçus. Par défaut, un message correctement traité est complete(). Si une erreur se produit lorsque le message est traité, il s’agit abandon()de .
Returns:
maxAutoLockRenewDuration
public ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder maxAutoLockRenewDuration(Duration maxAutoLockRenewDuration)
Définit la durée de la poursuite du renouvellement automatique du verrou. Définir Duration#ZERO ou null
désactiver le renouvellement automatique. Pour RECEIVE_AND_DELETE le mode, le renouvellement automatique est désactivé.
Parameters:
null
indique que le renouvellement automatique est désactivé.
Returns:
maxConcurrentCalls
public ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder maxConcurrentCalls(int maxConcurrentCalls)
Nombre maximal de messages simultanés que ce processeur doit traiter.
Parameters:
Returns:
maxConcurrentSessions
public ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder maxConcurrentSessions(int maxConcurrentSessions)
Active la substitution de traitement de session en traitant au maximum maxConcurrentSessions
.
Parameters:
Returns:
prefetchCount
public ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder prefetchCount(int prefetchCount)
Définit le nombre de prérécupérations du processeur. Pour les deux PEEK_LOCK modes et RECEIVE_AND_DELETE , la valeur par défaut est 0. La prérécupération accélère le flux de messages en visant à avoir un message facilement disponible pour une récupération locale lorsque et avant que l’application démarre le processeur. La définition d’une valeur autre que zéro prérécupérera ce nombre de messages. La définition de la valeur zéro désactive la prérécupération. L’utilisation d’une prérécupération non nulle risque de perdre des messages, même si elle offre de meilleures performances.
Parameters:
Returns:
processError
public ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder processError(Consumer
Gestionnaire d’erreurs pour le processeur qui sera appelé en cas d’erreur lors de la réception de messages.
Parameters:
Returns:
processMessage
public ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder processMessage(Consumer
Rappel de traitement des messages pour le processeur qui sera exécuté lors de la réception d’un message.
Parameters:
Returns:
queueName
public ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder queueName(String queueName)
Définit le nom de la file d’attente pour laquelle créer un processeur.
Parameters:
Returns:
receiveMode
public ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder receiveMode(ServiceBusReceiveMode receiveMode)
Définit le mode de réception du processeur.
Parameters:
Returns:
sessionIdleTimeout
public ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder sessionIdleTimeout(Duration sessionIdleTimeout)
Définit la durée maximale d’attente de réception d’un message pour la session active. Une fois ce délai écoulé, l’UC ferme la session et tente de traiter une autre session.
Une fois que le processeur a envoyé un message au processMessage(Consumer<ServiceBusReceivedMessageContext> processMessage) gestionnaire, si le processeur ne peut pas recevoir le message suivant de la session, car il n’y a pas de message suivant dans la session ou si le traitement du message actuel prend plus de temps que le sessionIdleTimeout
, la session expire. Pour éviter de perdre par inadvertance des sessions, choisissez une sessionIdleTimeout
valeur supérieure à la durée de traitement d’un message.
S’il n’est pas spécifié, le AmqpRetryOptions#getTryTimeout() est utilisé.
Parameters:
Returns:
subQueue
public ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder subQueue(SubQueue subQueue)
Définit le type de auquel SubQueue se connecter. Azure Service Bus files d’attente et abonnements fournissent une sous-file d’attente secondaire, appelée file d’attente de lettres mortes (DLQ).
Parameters:
Returns:
subscriptionName
public ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder subscriptionName(String subscriptionName)
Définit le nom de l’abonnement dans la rubrique à écouter. topicName(String topicName) doit également être défini.
Parameters:
Returns:
topicName
public ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder topicName(String topicName)
Définit le nom de la rubrique. subscriptionName(String subscriptionName) doit également être défini.
Parameters:
Returns:
S’applique à
Azure SDK for Java