ServiceBusClientBuilder.ServiceBusProcessorClientBuilder Classe
- java.
lang. Object - com.
azure. messaging. servicebus. ServiceBusClientBuilder. ServiceBusProcessorClientBuilder
- com.
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 |
---|---|
Service |
buildProcessorClient()
Cria o processador de mensagens do Barramento de Serviço responsável pela leitura ServiceBusReceivedMessage de uma fila ou assinatura específica. |
Service |
disableAutoComplete()
Desabilita o preenchimento automático e o abandono automático das mensagens recebidas. |
Service |
maxAutoLockRenewDuration(Duration maxAutoLockRenewDuration)
Define a quantidade de tempo para continuar renovando automaticamente o bloqueio. |
Service |
maxConcurrentCalls(int maxConcurrentCalls)
Máximo de mensagens simultâneas que esse processador deve processar. |
Service |
prefetchCount(int prefetchCount)
Define a contagem de pré-busca do processador. |
Service |
processError(Consumer<ServiceBusErrorContext> processError)
O manipulador de erros para o processador que será invocado no caso de um erro ao receber mensagens. |
Service |
processMessage(Consumer<ServiceBusReceivedMessageContext> processMessage)
O retorno de chamada de processamento de mensagem para o processador que será executado quando uma mensagem for recebida. |
Service |
queueName(String queueName)
Define o nome da fila para a qual criar um processador. |
Service |
receiveMode(ServiceBusReceiveMode receiveMode)
Define o modo de recebimento para o processador. |
Service |
subQueue(SubQueue subQueue)
Define o tipo do SubQueue ao qual se conectar. |
Service |
subscriptionName(String subscriptionName)
Define o nome da assinatura no tópico a ser escutado. |
Service |
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:
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:
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:
null
indica que a renovação automática está desabilitada.
Returns:
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:
Returns:
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:
Returns:
processError
public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder processError(Consumer
O manipulador de erros para o processador que será invocado no caso de um erro ao receber mensagens.
Parameters:
Returns:
processMessage
public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder 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.ServiceBusProcessorClientBuilder queueName(String queueName)
Define o nome da fila para a qual criar um processador.
Parameters:
Returns:
receiveMode
public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder receiveMode(ServiceBusReceiveMode receiveMode)
Define o modo de recebimento para o processador.
Parameters:
Returns:
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:
Returns:
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:
Returns:
topicName
public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder 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