ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder Classe
- java.
lang. Object - com.
azure. messaging. servicebus. ServiceBusClientBuilder. ServiceBusSessionProcessorClientBuilder
- com.
public final class ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder
Construtor para criar ServiceBusProcessorClient para consumir mensagens de uma entidade do Barramento de Serviço baseada em sessão. ServiceBusProcessorClient processa mensagens e erros por meio de processMessage(Consumer<ServiceBusReceivedMessageContext> processMessage) e processError(Consumer<ServiceBusErrorContext> processError). Quando o processador termina de processar uma sessão, ele tenta buscar a próxima sessão a ser processada.
Por padrão, o processador:
- Resolve automaticamente as mensagens. Desabilitado por meio de disableAutoComplete()
- Processa 1 sessão simultaneamente. Configurado por meio de maxConcurrentSessions(int maxConcurrentSessions)
- Invoca uma instância de processMessage(Consumer<ServiceBusReceivedMessageContext> processMessage). Configurado por meio de maxConcurrentCalls(int maxConcurrentCalls)
Criar uma instância de um cliente de processador habilitado para sessão
// 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();
Resumo do método
Métodos herdados de java.lang.Object
Detalhes do método
buildProcessorClient
public ServiceBusProcessorClient buildProcessorClient()
Cria um processador do Barramento de Serviço com reconhecimento de sessão responsável pela leitura ServiceBusReceivedMessage de uma fila ou assinatura específica.
Returns:
disableAutoComplete
public ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder disableAutoComplete()
Desabilita o preenchimento automático e o abandono automático das mensagens recebidas. Por padrão, uma mensagem processada com êxito é complete(). Se ocorrer um erro quando a mensagem for processada, será abandon().
Returns:
maxAutoLockRenewDuration
public ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder maxAutoLockRenewDuration(Duration maxAutoLockRenewDuration)
Define a quantidade de tempo para continuar renovando automaticamente o bloqueio. Definir Duration#ZERO ou null
desabilitar a renovação automática. Para RECEIVE_AND_DELETE o modo, a renovação automática está desabilitada.
Parameters:
null
indica que a renovação automática está desabilitada.
Returns:
maxConcurrentCalls
public ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder maxConcurrentCalls(int maxConcurrentCalls)
Máximo de mensagens simultâneas que esse processador deve processar.
Parameters:
Returns:
maxConcurrentSessions
public ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder maxConcurrentSessions(int maxConcurrentSessions)
Habilita a substituição do processamento de sessão processando no máximo maxConcurrentSessions
.
Parameters:
Returns:
prefetchCount
public ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder prefetchCount(int prefetchCount)
Define a contagem de pré-busca do processador. Para modos PEEK_LOCK e RECEIVE_AND_DELETE , o valor padrão é 0. A pré-busca acelera o fluxo de mensagens com o objetivo de ter uma mensagem prontamente disponível para recuperação local quando e antes de o aplicativo iniciar o processador. Definir um valor diferente de zero irá pré-buscar esse número de mensagens. Definir o valor como zero desativa a pré-busca. O uso de um pré-busca não zero corre o risco de perder mensagens, mesmo que tenha melhor desempenho.
Parameters:
Returns:
processError
public ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder processError(Consumer
O manipulador de erros para o processador que será invocado em caso de erro ao receber mensagens.
Parameters:
Returns:
processMessage
public ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder processMessage(Consumer
O retorno de chamada de processamento de mensagem para o processador que será executado quando uma mensagem for recebida.
Parameters:
Returns:
queueName
public ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder queueName(String queueName)
Define o nome da fila para a qual criar um processador.
Parameters:
Returns:
receiveMode
public ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder receiveMode(ServiceBusReceiveMode receiveMode)
Define o modo de recebimento para o processador.
Parameters:
Returns:
sessionIdleTimeout
public ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder sessionIdleTimeout(Duration sessionIdleTimeout)
Define o tempo máximo de espera para que uma mensagem seja recebida para a sessão ativa no momento. Decorrido esse tempo, o processador fechará a sessão e tentará processar outra sessão.
Depois que o processador entrega uma mensagem ao processMessage(Consumer<ServiceBusReceivedMessageContext> processMessage) manipulador, se o processador não puder receber a próxima mensagem da sessão porque não há nenhuma próxima mensagem na sessão ou o processamento da mensagem atual leva mais tempo do que o sessionIdleTimeout
tempo limite da sessão. Para evitar a perda inadvertida de sessões, escolha um sessionIdleTimeout
maior que o tempo de processamento de uma mensagem.
Se não for especificado, o AmqpRetryOptions#getTryTimeout() será usado.
Parameters:
Returns:
subQueue
public ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder subQueue(SubQueue subQueue)
Define o tipo do SubQueue ao qual se conectar. Barramento de Serviço do Azure filas e assinaturas fornecem uma sub-fila secundária, chamada DLQ (fila de mensagens mortas).
Parameters:
Returns:
subscriptionName
public ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder subscriptionName(String subscriptionName)
Define o nome da assinatura no tópico a ser escutado. topicName(String topicName) também deve ser definido.
Parameters:
Returns:
topicName
public ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder topicName(String topicName)
Define o nome do tópico. subscriptionName(String subscriptionName) também deve ser definido.
Parameters:
Returns:
Aplica-se a
Azure SDK for Java