Share via


ServiceBusClientBuilder.ServiceBusProcessorClientBuilder Clase

  • java.lang.Object
    • com.azure.messaging.servicebus.ServiceBusClientBuilder.ServiceBusProcessorClientBuilder

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
ServiceBusProcessorClient buildProcessorClient()

Crea un procesador de mensajes de Service Bus responsable de leer ServiceBusReceivedMessage desde una cola o suscripción específica.

ServiceBusProcessorClientBuilder disableAutoComplete()

Deshabilita el autocompletar y el abandono automático de los mensajes recibidos.

ServiceBusProcessorClientBuilder maxAutoLockRenewDuration(Duration maxAutoLockRenewDuration)

Establece la cantidad de tiempo para continuar con la renovación automática del bloqueo.

ServiceBusProcessorClientBuilder maxConcurrentCalls(int maxConcurrentCalls)

Número máximo de mensajes simultáneos que debe procesar este procesador.

ServiceBusProcessorClientBuilder prefetchCount(int prefetchCount)

Establece el recuento de capturas previas del procesador.

ServiceBusProcessorClientBuilder processError(Consumer<ServiceBusErrorContext> processError)

Controlador de errores para el procesador que se invocará en caso de error al recibir mensajes.

ServiceBusProcessorClientBuilder processMessage(Consumer<ServiceBusReceivedMessageContext> processMessage)

Devolución de llamada de procesamiento de mensajes para el procesador que se ejecutará cuando se reciba un mensaje.

ServiceBusProcessorClientBuilder queueName(String queueName)

Establece el nombre de la cola para la que se va a crear un procesador.

ServiceBusProcessorClientBuilder receiveMode(ServiceBusReceiveMode receiveMode)

Establece el modo de recepción para el procesador.

ServiceBusProcessorClientBuilder subQueue(SubQueue subQueue)

Establece el tipo de objeto al que SubQueue se va a conectar.

ServiceBusProcessorClientBuilder subscriptionName(String subscriptionName)

Establece el nombre de la suscripción en el tema al que se va a escuchar.

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

Nuevo ServiceBusProcessorClient que procesa los mensajes de una cola o suscripción.

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:

El objeto ServiceBusProcessorClientBuilder modificado.

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:

maxAutoLockRenewDuration - cantidad de tiempo para continuar con la renovación automática del bloqueo. Duration#ZERO o null indica que la renovación automática está deshabilitada.

Returns:

Objeto ServiceBusProcessorClientBuilder actualizado.

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:

maxConcurrentCalls - número máximo de mensajes simultáneos que debe procesar este procesador.

Returns:

Objeto ServiceBusProcessorClientBuilder actualizado.

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:

prefetchCount - Recuento de captura previa.

Returns:

El objeto ServiceBusProcessorClientBuilder modificado.

processError

public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder processError(Consumer processError)

Controlador de errores para el procesador que se invocará en caso de error al recibir mensajes.

Parameters:

processError - Controlador de errores que se ejecutará cuando se produzca un error.

Returns:

El objeto actualizado ServiceBusProcessorClientBuilder

processMessage

public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder processMessage(Consumer processMessage)

Devolución de llamada de procesamiento de mensajes para el procesador que se ejecutará cuando se reciba un mensaje.

Parameters:

processMessage - Consumidor de procesamiento de mensajes que se ejecutará cuando se reciba un mensaje.

Returns:

Objeto ServiceBusProcessorClientBuilder actualizado.

queueName

public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder queueName(String queueName)

Establece el nombre de la cola para la que se va a crear un procesador.

Parameters:

queueName - Nombre de la cola.

Returns:

El objeto ServiceBusProcessorClientBuilder modificado.

receiveMode

public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder receiveMode(ServiceBusReceiveMode receiveMode)

Establece el modo de recepción para el procesador.

Parameters:

receiveMode - Modo para recibir mensajes.

Returns:

El objeto ServiceBusProcessorClientBuilder modificado.

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:

subQueue - Tipo de la sub cola.

Returns:

El objeto ServiceBusProcessorClientBuilder modificado.

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:

subscriptionName - Nombre de la suscripción.

Returns:

El objeto ServiceBusProcessorClientBuilder modificado.

topicName

public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder topicName(String topicName)

Establece el nombre del tema. subscriptionName(String subscriptionName) también debe establecerse.

Parameters:

topicName - Nombre del tema.

Returns:

El objeto ServiceBusProcessorClientBuilder modificado.

Se aplica a