ServiceBusClientBuilder.ServiceBusProcessorClientBuilder Classe
- java.
lang. Object - com.
azure. messaging. servicebus. ServiceBusClientBuilder. ServiceBusProcessorClientBuilder
- com.
public final class ServiceBusClientBuilder.ServiceBusProcessorClientBuilder
Générateur de création ServiceBusProcessorClient pour consommer des messages à partir d’une entité Service Bus. ServiceBusProcessorClient fournit un mécanisme basé sur l’envoi (push) qui notifie le rappel de traitement du message lorsqu’un message est reçu ou le handle d’erreur lorsqu’une erreur est observée. Pour créer un instance, par conséquent, la configuration des deux rappels - processMessage(Consumer<ServiceBusReceivedMessageContext> processMessage) et processError(Consumer<ServiceBusErrorContext> processError) sont nécessaires. Par défaut, un ServiceBusProcessorClient est configuré avec des fonctionnalités de saisie semi-automatique et de renouvellement de verrouillage automatique.
Exemple de code pour instancier un client processeur et recevoir en mode PeekLock
// Function that gets called whenever a message is received.
Consumer<ServiceBusReceivedMessageContext> processMessage = context -> {
final ServiceBusReceivedMessage message = context.getMessage();
// Randomly complete or abandon each message. Ideally, in real-world scenarios, if the business logic
// handling message reaches desired state such that it doesn't require Service Bus to redeliver
// the same message, then context.complete() should be called otherwise context.abandon().
final boolean success = Math.random() < 0.5;
if (success) {
try {
context.complete();
} catch (RuntimeException error) {
System.out.printf("Completion of the message %s failed.%n Error: %s%n",
message.getMessageId(), error);
}
} else {
try {
context.abandon();
} catch (RuntimeException error) {
System.out.printf("Abandoning of the message %s failed.%nError: %s%n",
message.getMessageId(), error);
}
}
};
// Sample code that gets called if there's an error
Consumer<ServiceBusErrorContext> processError = errorContext -> {
if (errorContext.getException() instanceof ServiceBusException) {
ServiceBusException exception = (ServiceBusException) errorContext.getException();
System.out.printf("Error source: %s, reason %s%n", errorContext.getErrorSource(),
exception.getReason());
} else {
System.out.printf("Error occurred: %s%n", errorContext.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 processorClient = new ServiceBusClientBuilder()
.credential(fullyQualifiedNamespace, tokenCredential)
.processor()
.queueName(queueName)
.receiveMode(ServiceBusReceiveMode.PEEK_LOCK)
.disableAutoComplete() // Make sure to explicitly opt in to manual settlement (e.g. complete, abandon).
.processMessage(processMessage)
.processError(processError)
.disableAutoComplete()
.buildProcessorClient();
// Starts the processor in the background. Control returns immediately.
processorClient.start();
// Stop processor and dispose when done processing messages.
processorClient.stop();
processorClient.close();
Exemple de code pour instancier un client de processeur et recevoir en mode ReceiveAndDelete
// Function that gets called whenever a message is received.
Consumer<ServiceBusReceivedMessageContext> processMessage = context -> {
final ServiceBusReceivedMessage message = context.getMessage();
System.out.printf("Processing message. Session: %s, Sequence #: %s. Contents: %s%n",
message.getSessionId(), message.getSequenceNumber(), message.getBody());
};
// Sample code that gets called if there's an error
Consumer<ServiceBusErrorContext> processError = errorContext -> {
if (errorContext.getException() instanceof ServiceBusException) {
ServiceBusException exception = (ServiceBusException) errorContext.getException();
System.out.printf("Error source: %s, reason %s%n", errorContext.getErrorSource(),
exception.getReason());
} else {
System.out.printf("Error occurred: %s%n", errorContext.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"
// 'disableAutoComplete()' will opt in to manual settlement (e.g. complete, abandon).
ServiceBusProcessorClient processorClient = new ServiceBusClientBuilder()
.credential(fullyQualifiedNamespace, tokenCredential)
.processor()
.queueName(queueName)
.receiveMode(ServiceBusReceiveMode.RECEIVE_AND_DELETE)
.processMessage(processMessage)
.processError(processError)
.disableAutoComplete()
.buildProcessorClient();
// Starts the processor in the background. Control returns immediately.
processorClient.start();
// Stop processor and dispose when done processing messages.
processorClient.stop();
processorClient.close();
Résumé de la méthode
Modificateur et type | Méthode et description |
---|---|
Service |
buildProcessorClient()
Crée un processeur de messages Service Bus chargé 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 |
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 |
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 de messages Service Bus chargé de la lecture ServiceBusReceivedMessage à partir d’une file d’attente ou d’un abonnement spécifique.
Returns:
disableAutoComplete
public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder 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.ServiceBusProcessorClientBuilder 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.ServiceBusProcessorClientBuilder maxConcurrentCalls(int maxConcurrentCalls)
Nombre maximal de messages simultanés que ce processeur doit traiter. Par défaut, cette valeur est définie sur 1.
Parameters:
Returns:
prefetchCount
public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder 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.
Parameters:
Returns:
processError
public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder 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.ServiceBusProcessorClientBuilder 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.ServiceBusProcessorClientBuilder queueName(String queueName)
Définit le nom de la file d’attente pour laquelle créer un processeur.
Parameters:
Returns:
receiveMode
public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder receiveMode(ServiceBusReceiveMode receiveMode)
Définit le mode de réception du processeur.
Parameters:
Returns:
subQueue
public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder 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.ServiceBusProcessorClientBuilder 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.ServiceBusProcessorClientBuilder 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