Partilhar via


ServiceBusClientBuilder.ServiceBusProcessorClientBuilder Classe

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

public final class ServiceBusClientBuilder.ServiceBusProcessorClientBuilder

Construtor para criar ServiceBusProcessorClient para consumir mensagens de uma entidade do Barramento de Serviço. ServiceBusProcessorClient fornece um mecanismo baseado em push que notifica o retorno de chamada de processamento de mensagens quando uma mensagem é recebida ou o identificador de erro quando um erro é observado. Para criar uma instância, portanto, configurar os dois retornos de chamada – processMessage(Consumer<ServiceBusReceivedMessageContext> processMessage) e processError(Consumer<ServiceBusErrorContext> processError) são necessários. Por padrão, um ServiceBusProcessorClient é configurado com recursos de conclusão automática e renovação de bloqueio automático.

Código de exemplo para instanciar um cliente processador e receber no 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 exemplo para instanciar um cliente processador e receber no 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();

Resumo do método

Modificador e tipo Método e descrição
ServiceBusProcessorClient buildProcessorClient()

Cria o processador de mensagens do Barramento de Serviço responsável pela leitura ServiceBusReceivedMessage de uma fila ou assinatura específica.

ServiceBusProcessorClientBuilder disableAutoComplete()

Desabilita o preenchimento automático e o abandono automático das mensagens recebidas.

ServiceBusProcessorClientBuilder maxAutoLockRenewDuration(Duration maxAutoLockRenewDuration)

Define a quantidade de tempo para continuar renovando automaticamente o bloqueio.

ServiceBusProcessorClientBuilder maxConcurrentCalls(int maxConcurrentCalls)

Máximo de mensagens simultâneas que esse processador deve processar.

ServiceBusProcessorClientBuilder prefetchCount(int prefetchCount)

Define a contagem de pré-busca do processador.

ServiceBusProcessorClientBuilder processError(Consumer<ServiceBusErrorContext> processError)

O manipulador de erros para o processador que será invocado no caso de um erro ao receber mensagens.

ServiceBusProcessorClientBuilder processMessage(Consumer<ServiceBusReceivedMessageContext> processMessage)

O retorno de chamada de processamento de mensagem para o processador que será executado quando uma mensagem for recebida.

ServiceBusProcessorClientBuilder queueName(String queueName)

Define o nome da fila para a qual criar um processador.

ServiceBusProcessorClientBuilder receiveMode(ServiceBusReceiveMode receiveMode)

Define o modo de recebimento para o processador.

ServiceBusProcessorClientBuilder subQueue(SubQueue subQueue)

Define o tipo do SubQueue ao qual se conectar.

ServiceBusProcessorClientBuilder subscriptionName(String subscriptionName)

Define o nome da assinatura no tópico a ser escutado.

ServiceBusProcessorClientBuilder topicName(String topicName)

Define o nome do tópico.

Métodos herdados de java.lang.Object

Detalhes do método

buildProcessorClient

public ServiceBusProcessorClient buildProcessorClient()

Cria o processador de mensagens do Barramento de Serviço responsável pela leitura ServiceBusReceivedMessage de uma fila ou assinatura específica.

Returns:

Uma nova ServiceBusProcessorClient que processa mensagens de uma fila ou assinatura.

disableAutoComplete

public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder 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:

O objeto ServiceBusProcessorClientBuilder modificado.

maxAutoLockRenewDuration

public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder 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:

maxAutoLockRenewDuration - a quantidade de tempo para continuar renovando automaticamente o bloqueio. Duration#ZERO ou null indica que a renovação automática está desabilitada.

Returns:

O objeto atualizado ServiceBusProcessorClientBuilder.

maxConcurrentCalls

public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder maxConcurrentCalls(int maxConcurrentCalls)

Máximo de mensagens simultâneas que esse processador deve processar. Por padrão, isso é definido como 1.

Parameters:

maxConcurrentCalls - máximo de mensagens simultâneas que esse processador deve processar.

Returns:

O objeto atualizado ServiceBusProcessorClientBuilder.

prefetchCount

public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder prefetchCount(int prefetchCount)

Define a contagem de pré-busca do processador. Para os PEEK_LOCK modos 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 fará a pré-busca desse número de mensagens. Definir o valor como zero desativa a pré-busca.

Parameters:

prefetchCount - A contagem de pré-busca.

Returns:

O objeto ServiceBusProcessorClientBuilder modificado.

processError

public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder processError(Consumer processError)

O manipulador de erros para o processador que será invocado no caso de um erro ao receber mensagens.

Parameters:

processError - O manipulador de erros que será executado quando ocorrer um erro.

Returns:

O objeto atualizado ServiceBusProcessorClientBuilder

processMessage

public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder processMessage(Consumer processMessage)

O retorno de chamada de processamento de mensagem para o processador que será executado quando uma mensagem for recebida.

Parameters:

processMessage - O consumidor de processamento de mensagens que será executado quando uma mensagem for recebida.

Returns:

O objeto atualizado ServiceBusProcessorClientBuilder.

queueName

public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder queueName(String queueName)

Define o nome da fila para a qual criar um processador.

Parameters:

queueName - Nome da fila.

Returns:

O objeto ServiceBusProcessorClientBuilder modificado.

receiveMode

public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder receiveMode(ServiceBusReceiveMode receiveMode)

Define o modo de recebimento para o processador.

Parameters:

receiveMode - Modo para receber mensagens.

Returns:

O objeto ServiceBusProcessorClientBuilder modificado.

subQueue

public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder 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:

subQueue - O tipo da sub-fila.

Returns:

O objeto ServiceBusProcessorClientBuilder modificado.

subscriptionName

public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder subscriptionName(String subscriptionName)

Define o nome da assinatura no tópico a ser escutado. topicName(String topicName) também deve ser definido.

Parameters:

subscriptionName - O nome da assinatura.

Returns:

O objeto ServiceBusProcessorClientBuilder modificado.

topicName

public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder topicName(String topicName)

Define o nome do tópico. subscriptionName(String subscriptionName) também deve ser definido.

Parameters:

topicName - Nome do tópico.

Returns:

O objeto ServiceBusProcessorClientBuilder modificado.

Aplica-se a