ServiceBusClientBuilder.ServiceBusProcessorClientBuilder Clase
- java.
lang. Object - com.
azure. messaging. servicebus. ServiceBusClientBuilder. ServiceBusProcessorClientBuilder
- com.
public final class ServiceBusClientBuilder.ServiceBusProcessorClientBuilder
Generador para crear ServiceBusProcessorClient para consumir mensajes de una entidad de Service Bus. ServiceBusProcessorClient proporciona un mecanismo basado en inserción que notifica la devolución de llamada de procesamiento de mensajes cuando se recibe un mensaje o el identificador de error cuando se observa un error. Para crear una instancia, por lo tanto, configurar las dos devoluciones processMessage(Consumer<ServiceBusReceivedMessageContext> processMessage) de llamada y processError(Consumer<ServiceBusErrorContext> processError) son necesarias. De forma predeterminada, ServiceBusProcessorClient se configura con funcionalidades de finalización automática y renovación de bloqueo automático.
Código de ejemplo para crear una instancia de un cliente de procesador y recibir en el modo 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();
Código de ejemplo para crear instancias de un cliente de procesador y recibir en el modo 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();
Resumen del método
Modificador y tipo | Método y descripción |
---|---|
Service |
buildProcessorClient()
Crea un procesador de mensajes de Service Bus responsable de leer ServiceBusReceivedMessage desde una cola o suscripción específica. |
Service |
disableAutoComplete()
Deshabilita el autocompletar y el abandono automático de los mensajes recibidos. |
Service |
maxAutoLockRenewDuration(Duration maxAutoLockRenewDuration)
Establece la cantidad de tiempo para continuar con la renovación automática del bloqueo. |
Service |
maxConcurrentCalls(int maxConcurrentCalls)
Número máximo de mensajes simultáneos que debe procesar este procesador. |
Service |
prefetchCount(int prefetchCount)
Establece el recuento de capturas previas del procesador. |
Service |
processError(Consumer<ServiceBusErrorContext> processError)
Controlador de errores para el procesador que se invocará en caso de error al recibir mensajes. |
Service |
processMessage(Consumer<ServiceBusReceivedMessageContext> processMessage)
Devolución de llamada de procesamiento de mensajes para el procesador que se ejecutará cuando se reciba un mensaje. |
Service |
queueName(String queueName)
Establece el nombre de la cola para la que se va a crear un procesador. |
Service |
receiveMode(ServiceBusReceiveMode receiveMode)
Establece el modo de recepción para el procesador. |
Service |
subQueue(SubQueue subQueue)
Establece el tipo de objeto al que SubQueue se va a conectar. |
Service |
subscriptionName(String subscriptionName)
Establece el nombre de la suscripción en el tema al que se va a escuchar. |
Service |
topicName(String topicName)
Establece el nombre del tema. |
Métodos heredados de java.lang.Object
Detalles del método
buildProcessorClient
public ServiceBusProcessorClient buildProcessorClient()
Crea un procesador de mensajes de Service Bus responsable de leer ServiceBusReceivedMessage desde una cola o suscripción específica.
Returns:
disableAutoComplete
public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder disableAutoComplete()
Deshabilita el autocompletar y el abandono automático de los mensajes recibidos. De forma predeterminada, un mensaje procesado correctamente es complete(). Si se produce un error cuando se procesa el mensaje, es abandon().
Returns:
maxAutoLockRenewDuration
public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder maxAutoLockRenewDuration(Duration maxAutoLockRenewDuration)
Establece la cantidad de tiempo para continuar con la renovación automática del bloqueo. Establecer Duration#ZERO o null
deshabilitar la renovación automática. En RECEIVE_AND_DELETE el modo , la renovación automática está deshabilitada.
Parameters:
null
indica que la renovación automática está deshabilitada.
Returns:
maxConcurrentCalls
public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder maxConcurrentCalls(int maxConcurrentCalls)
Número máximo de mensajes simultáneos que debe procesar este procesador. De forma predeterminada, se establece en 1.
Parameters:
Returns:
prefetchCount
public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder prefetchCount(int prefetchCount)
Establece el recuento de capturas previas del procesador. Para los PEEK_LOCK modos y RECEIVE_AND_DELETE , el valor predeterminado es 0. La captura previa acelera el flujo de mensajes apuntando a tener un mensaje disponible para la recuperación local cuando y antes de que la aplicación inicie el procesador. Si se establece un valor distinto de cero, se capturará previamente ese número de mensajes. Al establecer el valor en cero, se desactiva la captura previa.
Parameters:
Returns:
processError
public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder processError(Consumer
Controlador de errores para el procesador que se invocará en caso de error al recibir mensajes.
Parameters:
Returns:
processMessage
public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder processMessage(Consumer
Devolución de llamada de procesamiento de mensajes para el procesador que se ejecutará cuando se reciba un mensaje.
Parameters:
Returns:
queueName
public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder queueName(String queueName)
Establece el nombre de la cola para la que se va a crear un procesador.
Parameters:
Returns:
receiveMode
public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder receiveMode(ServiceBusReceiveMode receiveMode)
Establece el modo de recepción para el procesador.
Parameters:
Returns:
subQueue
public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder subQueue(SubQueue subQueue)
Establece el tipo de objeto al que SubQueue se va a conectar. Azure Service Bus colas y suscripciones proporcionan una sub cola secundaria, denominada cola de mensajes fallidos (DLQ).
Parameters:
Returns:
subscriptionName
public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder subscriptionName(String subscriptionName)
Establece el nombre de la suscripción en el tema al que se va a escuchar. topicName(String topicName) también debe establecerse.
Parameters:
Returns:
topicName
public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder topicName(String topicName)
Establece el nombre del tema. subscriptionName(String subscriptionName) también debe establecerse.
Parameters:
Returns:
Se aplica a
Azure SDK for Java