Partilhar via


ServiceBusSenderAsyncClient Classe

  • java.lang.Object
    • com.azure.messaging.servicebus.ServiceBusSenderAsyncClient

Implementações

public final class ServiceBusSenderAsyncClient
implements AutoCloseable

Um cliente assíncrono para enviar mensagens para um recurso do Barramento de Serviço.

Os exemplos mostrados neste documento usam um objeto de credencial chamado DefaultAzureCredential para autenticação, que é apropriado para a maioria dos cenários, incluindo ambientes locais de desenvolvimento e produção. Além disso, é recomendável usar a identidade gerenciada para autenticação em ambientes de produção. Você pode encontrar mais informações sobre diferentes maneiras de autenticação e seus tipos de credenciais correspondentes na documentação da Identidade do Azure".

Exemplo: criar uma instância do remetente

TokenCredential credential = new DefaultAzureCredentialBuilder().build();

 // 'fullyQualifiedNamespace' will look similar to "{your-namespace}.servicebus.windows.net"
 ServiceBusSenderAsyncClient asyncSender = new ServiceBusClientBuilder()
     .credential(fullyQualifiedNamespace, credential)
     .sender()
     .queueName(queueName)
     .buildAsyncClient();

 // When users are done with the sender, they should dispose of it.
 // Clients should be long-lived objects as they require resources
 // and time to establish a connection to the service.
 asyncSender.close();

Exemplo: enviar mensagens para um recurso do Barramento de Serviço

// `subscribe` is a non-blocking call. The program will move onto the next line of code when it starts the
 // operation.  Users should use the callbacks on `subscribe` to understand the status of the send operation.
 asyncSender.createMessageBatch().flatMap(batch -> {
     batch.tryAddMessage(new ServiceBusMessage("test-1"));
     batch.tryAddMessage(new ServiceBusMessage("test-2"));
     return asyncSender.sendMessages(batch);
 }).subscribe(unused -> {
 }, error -> {
     System.err.println("Error occurred while sending batch:" + error);
 }, () -> {
     System.out.println("Send complete.");
 });

Exemplo: enviar mensagens usando um tamanho limitado ServiceBusMessageBatch a um recurso do Barramento de Serviço

Flux<ServiceBusMessage> telemetryMessages = Flux.just(firstMessage, secondMessage);

 // Setting `setMaximumSizeInBytes` when creating a batch, limits the size of that batch.
 // In this case, all the batches created with these options are limited to 256 bytes.
 CreateMessageBatchOptions options = new CreateMessageBatchOptions()
     .setMaximumSizeInBytes(256);
 AtomicReference<ServiceBusMessageBatch> currentBatch = new AtomicReference<>();

 // Sends the current batch if it is not null and not empty.  If the current batch is null, sets it.
 // Returns the batch to work with.
 Mono<ServiceBusMessageBatch> sendBatchAndGetCurrentBatchOperation = Mono.defer(() -> {
     ServiceBusMessageBatch batch = currentBatch.get();

     if (batch == null) {
         return asyncSender.createMessageBatch(options);
     }

     if (batch.getCount() > 0) {
         return asyncSender.sendMessages(batch).then(
             asyncSender.createMessageBatch(options)
                 .handle((ServiceBusMessageBatch newBatch, SynchronousSink<ServiceBusMessageBatch> sink) -> {
                     // Expect that the batch we just sent is the current one. If it is not, there's a race
                     // condition accessing currentBatch reference.
                     if (!currentBatch.compareAndSet(batch, newBatch)) {
                         sink.error(new IllegalStateException(
                             "Expected that the object in currentBatch was batch. But it is not."));
                     } else {
                         sink.next(newBatch);
                     }
                 }));
     } else {
         return Mono.just(batch);
     }
 });

 // The sample Flux contains two messages, but it could be an infinite stream of telemetry messages.
 Flux<Void> sendMessagesOperation = telemetryMessages.flatMap(message -> {
     return sendBatchAndGetCurrentBatchOperation.flatMap(batch -> {
         if (batch.tryAddMessage(message)) {
             return Mono.empty();
         } else {
             return sendBatchAndGetCurrentBatchOperation
                 .handle((ServiceBusMessageBatch newBatch, SynchronousSink<Void> sink) -> {
                     if (!newBatch.tryAddMessage(message)) {
                         sink.error(new IllegalArgumentException(
                             "Message is too large to fit in an empty batch."));
                     } else {
                         sink.complete();
                     }
                 });
         }
     });
 });

 // `subscribe` is a non-blocking call. The program will move onto the next line of code when it starts the
 // operation.  Users should use the callbacks on `subscribe` to understand the status of the send operation.
 Disposable disposable = sendMessagesOperation.then(sendBatchAndGetCurrentBatchOperation)
     .subscribe(batch -> {
         System.out.println("Last batch should be empty: " + batch.getCount());
     }, error -> {
         System.err.println("Error sending telemetry messages: " + error);
     }, () -> {
         System.out.println("Completed.");

         // Continue using the sender and finally, dispose of the sender.
         // Clients should be long-lived objects as they require resources
         // and time to establish a connection to the service.
         asyncSender.close();
     });

Exemplo: enviando uma mensagem para uma fila habilitada para sessão

O snippet a seguir demonstra o envio de uma mensagem para uma fila habilitada para sessões do Barramento de Serviço . Definir setMessageId(String messageId) a propriedade como "saudações" enviará a mensagem para uma sessão do Barramento de Serviço com uma ID de "saudações".

// 'fullyQualifiedNamespace' will look similar to "{your-namespace}.servicebus.windows.net"
 ServiceBusSenderAsyncClient sender = new ServiceBusClientBuilder()
     .credential(fullyQualifiedNamespace, new DefaultAzureCredentialBuilder().build())
     .sender()
     .queueName(sessionEnabledQueueName)
     .buildAsyncClient();

 // Setting sessionId publishes that message to a specific session, in this case, "greeting".
 ServiceBusMessage message = new ServiceBusMessage("Hello world")
     .setSessionId("greetings");

 // `subscribe` is a non-blocking call. The program will move onto the next line of code when it starts the
 // operation.  Users should use the callbacks on `subscribe` to understand the status of the send operation.
 sender.sendMessage(message).subscribe(unused -> {
 }, error -> {
     System.err.println("Error occurred publishing batch: " + error);
 }, () -> {
     System.out.println("Send complete.");
 });

 // Continue using the sender and finally, dispose of the sender.
 // Clients should be long-lived objects as they require resources
 // and time to establish a connection to the service.
 sender.close();

Resumo do método

Modificador e tipo Método e descrição
Mono<Void> cancelScheduledMessage(long sequenceNumber)

Cancela a enfileiramento de uma mensagem agendada, se ela ainda não tiver sido enfileirada.

Mono<Void> cancelScheduledMessages(Iterable<Long> sequenceNumbers)

Cancela a enfileiramento de uma mensagem já agendada, caso ainda não tenha sido enfileirada.

void close()

Descarta o ServiceBusSenderAsyncClient.

Mono<Void> commitTransaction(ServiceBusTransactionContext transactionContext)

Confirma a transação fornecida ServiceBusTransactionContext.

Mono<ServiceBusMessageBatch> createMessageBatch()

Cria um ServiceBusMessageBatch que pode caber quantas mensagens o transporte permitir.

Mono<ServiceBusMessageBatch> createMessageBatch(CreateMessageBatchOptions options)

Cria um ServiceBusMessageBatch configurado com as opções especificadas.

Mono<ServiceBusTransactionContext> createTransaction()

Inicia uma nova transação no Barramento de Serviço.

String getEntityPath()

Obtém o nome do recurso do Barramento de Serviço.

String getFullyQualifiedNamespace()

Obtém o namespace totalmente qualificado.

String getIdentifier()

Obtém o identificador da instância do ServiceBusSenderAsyncClient.

Mono<Void> rollbackTransaction(ServiceBusTransactionContext transactionContext)

Reverte a transação fornecida ServiceBusTransactionContext.

Mono<Long> scheduleMessage(ServiceBusMessage message, OffsetDateTime scheduledEnqueueTime)

Envia uma mensagem agendada para a entidade Barramento de Serviço do Azure à qual esse remetente está conectado.

Mono<Long> scheduleMessage(ServiceBusMessage message, OffsetDateTime scheduledEnqueueTime, ServiceBusTransactionContext transactionContext)

Envia uma mensagem agendada para a entidade Barramento de Serviço do Azure à qual esse remetente está conectado.

Flux<Long> scheduleMessages(Iterable<ServiceBusMessage> messages, OffsetDateTime scheduledEnqueueTime)

Envia um lote de mensagens agendadas para a entidade Barramento de Serviço do Azure à qual esse remetente está conectado.

Flux<Long> scheduleMessages(Iterable<ServiceBusMessage> messages, OffsetDateTime scheduledEnqueueTime, ServiceBusTransactionContext transactionContext)

Envia mensagens agendadas para a entidade Barramento de Serviço do Azure à qual esse remetente está conectado.

Mono<Void> sendMessage(ServiceBusMessage message)

Envia uma mensagem para uma fila ou tópico do Barramento de Serviço.

Mono<Void> sendMessage(ServiceBusMessage message, ServiceBusTransactionContext transactionContext)

Envia uma mensagem para uma fila ou tópico do Barramento de Serviço.

Mono<Void> sendMessages(ServiceBusMessageBatch batch)

Envia um lote de mensagens para a entidade Barramento de Serviço do Azure à qual esse remetente está conectado.

Mono<Void> sendMessages(ServiceBusMessageBatch batch, ServiceBusTransactionContext transactionContext)

Envia um lote de mensagens para a entidade Barramento de Serviço do Azure à qual esse remetente está conectado.

Mono<Void> sendMessages(Iterable<ServiceBusMessage> messages)

Envia um conjunto de mensagens para uma fila ou tópico do Barramento de Serviço usando uma abordagem em lote.

Mono<Void> sendMessages(Iterable<ServiceBusMessage> messages, ServiceBusTransactionContext transactionContext)

Envia um conjunto de mensagens para uma fila ou tópico do Barramento de Serviço usando uma abordagem em lote.

Métodos herdados de java.lang.Object

Detalhes do método

cancelScheduledMessage

public Mono cancelScheduledMessage(long sequenceNumber)

Cancela a enfileiramento de uma mensagem agendada, se ela ainda não tiver sido enfileirada.

Parameters:

sequenceNumber - da mensagem agendada a ser cancelada.

Returns:

O Mono que conclui essa operação no recurso do barramento de serviço.

cancelScheduledMessages

public Mono cancelScheduledMessages(Iterable sequenceNumbers)

Cancela a enfileiramento de uma mensagem já agendada, caso ainda não tenha sido enfileirada.

Parameters:

sequenceNumbers - das mensagens agendadas a serem canceladas.

Returns:

O Mono que conclui essa operação no recurso do barramento de serviço.

close

public void close()

Descarta o ServiceBusSenderAsyncClient. Se o cliente tiver uma conexão dedicada, a conexão subjacente também será fechada.

commitTransaction

public Mono commitTransaction(ServiceBusTransactionContext transactionContext)

Confirma a transação fornecida ServiceBusTransactionContext. Isso fará uma chamada para o Barramento de Serviço.

Parameters:

transactionContext - a ser confirmado.

Returns:

O Mono que conclui essa operação no recurso do Barramento de Serviço.

createMessageBatch

public Mono createMessageBatch()

Cria um ServiceBusMessageBatch que pode caber quantas mensagens o transporte permitir.

Returns:

Um ServiceBusMessageBatch que pode caber quantas mensagens o transporte permitir.

createMessageBatch

public Mono createMessageBatch(CreateMessageBatchOptions options)

Cria um ServiceBusMessageBatch configurado com as opções especificadas.

Parameters:

options - Um conjunto de opções usado para configurar o ServiceBusMessageBatch.

Returns:

Um novo ServiceBusMessageBatch configurado com as opções fornecidas.

createTransaction

public Mono createTransaction()

Inicia uma nova transação no Barramento de Serviço. O ServiceBusTransactionContext deve ser passado junto com ServiceBusReceivedMessage todas as operações que precisam estar nessa transação.

Returns:

getEntityPath

public String getEntityPath()

Obtém o nome do recurso do Barramento de Serviço.

Returns:

O nome do recurso do Barramento de Serviço.

getFullyQualifiedNamespace

public String getFullyQualifiedNamespace()

Obtém o namespace totalmente qualificado.

Returns:

O namespace totalmente qualificado.

getIdentifier

public String getIdentifier()

Obtém o identificador da instância do ServiceBusSenderAsyncClient.

Returns:

O identificador que pode identificar a instância do ServiceBusSenderAsyncClient.

rollbackTransaction

public Mono rollbackTransaction(ServiceBusTransactionContext transactionContext)

Reverte a transação fornecida ServiceBusTransactionContext. Isso fará uma chamada para o Barramento de Serviço.

Parameters:

transactionContext - Transação a ser revertida.

Returns:

O Mono que conclui essa operação no recurso do Barramento de Serviço.

scheduleMessage

public Mono scheduleMessage(ServiceBusMessage message, OffsetDateTime scheduledEnqueueTime)

Envia uma mensagem agendada para a entidade Barramento de Serviço do Azure à qual esse remetente está conectado. Uma mensagem agendada é enfileirada e disponibilizada aos receptores somente no horário de enfileiramento agendado.

Parameters:

message - Mensagem a ser enviada para a Fila do Barramento de Serviço.
scheduledEnqueueTime - OffsetDateTime no qual a mensagem deve aparecer na fila ou tópico do Barramento de Serviço.

Returns:

O número de sequência da mensagem agendada que pode ser usada para cancelar o agendamento da mensagem.

scheduleMessage

public Mono scheduleMessage(ServiceBusMessage message, OffsetDateTime scheduledEnqueueTime, ServiceBusTransactionContext transactionContext)

Envia uma mensagem agendada para a entidade Barramento de Serviço do Azure à qual esse remetente está conectado. Uma mensagem agendada é enfileirada e disponibilizada aos receptores somente no horário de enfileiramento agendado.

Parameters:

message - Mensagem a ser enviada para a Fila do Barramento de Serviço.
scheduledEnqueueTime - OffsetDateTime no qual a mensagem deve aparecer na fila ou tópico do Barramento de Serviço.
transactionContext - a ser definido na mensagem antes de enviar para o Barramento de Serviço.

Returns:

O número de sequência da mensagem agendada que pode ser usada para cancelar o agendamento da mensagem.

scheduleMessages

public Flux scheduleMessages(Iterable messages, OffsetDateTime scheduledEnqueueTime)

Envia um lote de mensagens agendadas para a entidade Barramento de Serviço do Azure à qual esse remetente está conectado. Uma mensagem agendada é enfileirada e disponibilizada aos receptores somente no horário de enfileiramento agendado.

Parameters:

messages - Mensagens a serem enviadas para a fila ou tópico do Barramento de Serviço.
scheduledEnqueueTime - OffsetDateTime no qual a mensagem deve aparecer na fila ou tópico do Barramento de Serviço.

Returns:

Números de sequência das mensagens agendadas que podem ser usadas para cancelar as mensagens.

scheduleMessages

public Flux scheduleMessages(Iterable messages, OffsetDateTime scheduledEnqueueTime, ServiceBusTransactionContext transactionContext)

Envia mensagens agendadas para a entidade Barramento de Serviço do Azure à qual esse remetente está conectado. Uma mensagem agendada é enfileirada e disponibilizada aos receptores somente no horário de enfileiramento agendado.

Parameters:

messages - Mensagens a serem enviadas para a Fila do Barramento de Serviço.
scheduledEnqueueTime - OffsetDateTime no qual as mensagens devem aparecer na fila ou tópico do Barramento de Serviço.
transactionContext - Transação a ser associada à operação.

Returns:

Números de sequência das mensagens agendadas que podem ser usadas para cancelar as mensagens.

sendMessage

public Mono sendMessage(ServiceBusMessage message)

Envia uma mensagem para uma fila ou tópico do Barramento de Serviço.

Parameters:

message - Mensagem a ser enviada para a fila ou tópico do Barramento de Serviço.

Returns:

O Mono conclui essa operação no recurso do barramento de serviço.

sendMessage

public Mono sendMessage(ServiceBusMessage message, ServiceBusTransactionContext transactionContext)

Envia uma mensagem para uma fila ou tópico do Barramento de Serviço.

Parameters:

message - Mensagem a ser enviada para a fila ou tópico do Barramento de Serviço.
transactionContext - a ser definido na mensagem em lote antes de enviar para o Barramento de Serviço.

Returns:

O Mono conclui essa operação no recurso do barramento de serviço.

sendMessages

public Mono sendMessages(ServiceBusMessageBatch batch)

Envia um lote de mensagens para a entidade Barramento de Serviço do Azure à qual esse remetente está conectado.

Parameters:

batch - de mensagens que permitem que o cliente envie o tamanho máximo permitido para um lote de mensagens.

Returns:

Um Mono o conclui essa operação no recurso do barramento de serviço.

sendMessages

public Mono sendMessages(ServiceBusMessageBatch batch, ServiceBusTransactionContext transactionContext)

Envia um lote de mensagens para a entidade Barramento de Serviço do Azure à qual esse remetente está conectado.

Parameters:

batch - de mensagens que permitem que o cliente envie o tamanho máximo permitido para um lote de mensagens.
transactionContext - a ser definido na mensagem em lote antes de enviar para o Barramento de Serviço.

Returns:

Um Mono o conclui essa operação no recurso do barramento de serviço.

sendMessages

public Mono sendMessages(Iterable messages)

Envia um conjunto de mensagens para uma fila ou tópico do Barramento de Serviço usando uma abordagem em lote. Se o tamanho das mensagens exceder o tamanho máximo de um único lote, uma exceção será disparada e o envio falhará. Por padrão, o tamanho da mensagem é o valor máximo permitido no link.

Parameters:

messages - Mensagens a serem enviadas para a fila ou tópico do Barramento de Serviço.

Returns:

Um Mono que é concluído quando todas as mensagens foram enviadas para o recurso do Barramento de Serviço.

sendMessages

public Mono sendMessages(Iterable messages, ServiceBusTransactionContext transactionContext)

Envia um conjunto de mensagens para uma fila ou tópico do Barramento de Serviço usando uma abordagem em lote. Se o tamanho das mensagens exceder o tamanho máximo de um único lote, uma exceção será disparada e o envio falhará. Por padrão, o tamanho da mensagem é o valor máximo permitido no link.

Parameters:

messages - Mensagens a serem enviadas para a fila ou tópico do Barramento de Serviço.
transactionContext - a ser definido na mensagem em lote antes de enviar para o Barramento de Serviço.

Returns:

Um Mono que é concluído quando todas as mensagens foram enviadas para o recurso do Barramento de Serviço.

Aplica-se a