Share via


ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder Clase

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

public final class ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder

Generador para crear ServiceBusProcessorClient para consumir mensajes de una entidad de Service Bus basada en sesión. ServiceBusProcessorClient procesa mensajes y errores a través processMessage(Consumer<ServiceBusReceivedMessageContext> processMessage) de y processError(Consumer<ServiceBusErrorContext> processError). Cuando el procesador finaliza el procesamiento de una sesión, intenta capturar la siguiente sesión para procesarla.

De forma predeterminada, el procesador:

Creación de una instancia de un cliente de procesador habilitado para sesión

// 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();

Resumen del método

Modificador y tipo Método y descripción
ServiceBusProcessorClient buildProcessorClient()

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

ServiceBusSessionProcessorClientBuilder disableAutoComplete()

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

ServiceBusSessionProcessorClientBuilder maxAutoLockRenewDuration(Duration maxAutoLockRenewDuration)

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

ServiceBusSessionProcessorClientBuilder maxConcurrentCalls(int maxConcurrentCalls)

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

ServiceBusSessionProcessorClientBuilder maxConcurrentSessions(int maxConcurrentSessions)

Habilita la sustitución del procesamiento de sesión mediante el procesamiento como máximo maxConcurrentSessions.

ServiceBusSessionProcessorClientBuilder prefetchCount(int prefetchCount)

Establece el recuento de capturas previas del procesador.

ServiceBusSessionProcessorClientBuilder processError(Consumer<ServiceBusErrorContext> processError)

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

ServiceBusSessionProcessorClientBuilder processMessage(Consumer<ServiceBusReceivedMessageContext> processMessage)

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

ServiceBusSessionProcessorClientBuilder queueName(String queueName)

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

ServiceBusSessionProcessorClientBuilder receiveMode(ServiceBusReceiveMode receiveMode)

Establece el modo de recepción para el procesador.

ServiceBusSessionProcessorClientBuilder sessionIdleTimeout(Duration sessionIdleTimeout)

Establece la cantidad máxima de tiempo que se va a esperar a que se reciba un mensaje para la sesión activa actualmente.

ServiceBusSessionProcessorClientBuilder subQueue(SubQueue subQueue)

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

ServiceBusSessionProcessorClientBuilder subscriptionName(String subscriptionName)

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

ServiceBusSessionProcessorClientBuilder 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 Service Bus compatible con la sesión responsable de leer ServiceBusReceivedMessage desde una cola o suscripción específica.

Returns:

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

disableAutoComplete

public ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder 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 ServiceBusSessionProcessorClientBuilder modificado.

maxAutoLockRenewDuration

public ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder 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 ServiceBusSessionProcessorClientBuilder actualizado.

maxConcurrentCalls

public ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder maxConcurrentCalls(int maxConcurrentCalls)

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

Parameters:

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

Returns:

Objeto ServiceBusSessionProcessorClientBuilder actualizado.

maxConcurrentSessions

public ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder maxConcurrentSessions(int maxConcurrentSessions)

Habilita la sustitución del procesamiento de sesión mediante el procesamiento como máximo maxConcurrentSessions.

Parameters:

maxConcurrentSessions - Número máximo de sesiones simultáneas que se van a procesar en un momento dado.

Returns:

El objeto ServiceBusSessionProcessorClientBuilder modificado.

prefetchCount

public ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder 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. El uso de una captura previa no cero conlleva riesgos de perder mensajes aunque tenga un mejor rendimiento.

Parameters:

prefetchCount - Recuento de captura previa.

Returns:

El objeto ServiceBusProcessorClientBuilder modificado.

processError

public ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder 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.ServiceBusSessionProcessorClientBuilder 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.ServiceBusSessionProcessorClientBuilder 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 ServiceBusSessionProcessorClientBuilder modificado.

receiveMode

public ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder receiveMode(ServiceBusReceiveMode receiveMode)

Establece el modo de recepción para el procesador.

Parameters:

receiveMode - Modo para recibir mensajes.

Returns:

El objeto ServiceBusSessionProcessorClientBuilder modificado.

sessionIdleTimeout

public ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder sessionIdleTimeout(Duration sessionIdleTimeout)

Establece la cantidad máxima de tiempo que se va a esperar a que se reciba un mensaje para la sesión activa actualmente. Una vez transcurrido este tiempo, el procesador cerrará la sesión e intentará procesar otra sesión.

Después de que el procesador entregue un mensaje al processMessage(Consumer<ServiceBusReceivedMessageContext> processMessage) controlador, si el procesador no puede recibir el siguiente mensaje de la sesión porque no hay ningún mensaje siguiente en la sesión o el procesamiento del mensaje actual tarda más de lo que sessionIdleTimeout la sesión agotará el tiempo de espera. Para evitar la pérdida involuntaria de sesiones, elija un sessionIdleTimeout valor mayor que el tiempo de procesamiento de un mensaje.

Si no se especifica, AmqpRetryOptions#getTryTimeout() se usará .

Parameters:

sessionIdleTimeout - Tiempo de espera de inactividad de la sesión.

Returns:

Objeto ServiceBusSessionProcessorClientBuilder actualizado.

subQueue

public ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder 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 ServiceBusSessionProcessorClientBuilder modificado.

subscriptionName

public ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder 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 ServiceBusSessionProcessorClientBuilder modificado.

topicName

public ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder topicName(String topicName)

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

Parameters:

topicName - Nombre del tema.

Returns:

El objeto ServiceBusSessionProcessorClientBuilder modificado.

Se aplica a