ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder Clase
- java.
lang. Object - com.
azure. messaging. servicebus. ServiceBusClientBuilder. ServiceBusSessionProcessorClientBuilder
- com.
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:
- Liquida automáticamente los mensajes. Deshabilitado a través de disableAutoComplete()
- Procesa 1 sesión simultáneamente. Configurado a través de maxConcurrentSessions(int maxConcurrentSessions)
- Invoca 1 instancia de processMessage(Consumer<ServiceBusReceivedMessageContext> processMessage). Configurado a través de maxConcurrentCalls(int maxConcurrentCalls)
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 |
---|---|
Service |
buildProcessorClient()
Crea un procesador de Service Bus compatible con la sesión 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 |
maxConcurrentSessions(int maxConcurrentSessions)
Habilita la sustitución del procesamiento de sesión mediante el procesamiento como máximo |
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 |
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. |
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 Service Bus compatible con la sesión responsable de leer ServiceBusReceivedMessage desde una cola o suscripción específica.
Returns:
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:
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:
null
indica que la renovación automática está deshabilitada.
Returns:
maxConcurrentCalls
public ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder maxConcurrentCalls(int maxConcurrentCalls)
Número máximo de mensajes simultáneos que debe procesar este procesador.
Parameters:
Returns:
maxConcurrentSessions
public ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder maxConcurrentSessions(int maxConcurrentSessions)
Habilita la sustitución del procesamiento de sesión mediante el procesamiento como máximo maxConcurrentSessions
.
Parameters:
Returns:
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:
Returns:
processError
public ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder processError(Consumer
Controlador de errores para el procesador que se invocará en caso de error al recibir mensajes.
Parameters:
Returns:
processMessage
public ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder 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.ServiceBusSessionProcessorClientBuilder queueName(String queueName)
Establece el nombre de la cola para la que se va a crear un procesador.
Parameters:
Returns:
receiveMode
public ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder receiveMode(ServiceBusReceiveMode receiveMode)
Establece el modo de recepción para el procesador.
Parameters:
Returns:
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:
Returns:
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:
Returns:
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:
Returns:
topicName
public ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder topicName(String topicName)
Establece el nombre del tema. subscriptionName(String subscriptionName) también debe establecerse.
Parameters:
Returns:
Se aplica a
Azure SDK for Java