ServiceBusSenderAsyncClient Classe
- java.
lang. Object - com.
azure. messaging. servicebus. ServiceBusSenderAsyncClient
- com.
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<Service |
createMessageBatch()
Cria um ServiceBusMessageBatch que pode caber quantas mensagens o transporte permitir. |
Mono<Service |
createMessageBatch(CreateMessageBatchOptions options)
Cria um ServiceBusMessageBatch configurado com as opções especificadas. |
Mono<Service |
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
Cancela a enfileiramento de uma mensagem agendada, se ela ainda não tiver sido enfileirada.
Parameters:
Returns:
cancelScheduledMessages
public Mono
Cancela a enfileiramento de uma mensagem já agendada, caso ainda não tenha sido enfileirada.
Parameters:
Returns:
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
Confirma a transação fornecida ServiceBusTransactionContext. Isso fará uma chamada para o Barramento de Serviço.
Parameters:
Returns:
createMessageBatch
public Mono
Cria um ServiceBusMessageBatch que pode caber quantas mensagens o transporte permitir.
Returns:
createMessageBatch
public Mono
Cria um ServiceBusMessageBatch configurado com as opções especificadas.
Parameters:
Returns:
createTransaction
public Mono
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:
getFullyQualifiedNamespace
public String getFullyQualifiedNamespace()
Obtém o namespace totalmente qualificado.
Returns:
getIdentifier
public String getIdentifier()
Obtém o identificador da instância do ServiceBusSenderAsyncClient.
Returns:
rollbackTransaction
public Mono
Reverte a transação fornecida ServiceBusTransactionContext. Isso fará uma chamada para o Barramento de Serviço.
Parameters:
Returns:
scheduleMessage
public Mono
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:
Returns:
scheduleMessage
public Mono
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:
Returns:
scheduleMessages
public Flux
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:
Returns:
scheduleMessages
public Flux
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:
Returns:
sendMessage
public Mono
Envia uma mensagem para uma fila ou tópico do Barramento de Serviço.
Parameters:
Returns:
sendMessage
public Mono
Envia uma mensagem para uma fila ou tópico do Barramento de Serviço.
Parameters:
Returns:
sendMessages
public Mono
Envia um lote de mensagens para a entidade Barramento de Serviço do Azure à qual esse remetente está conectado.
Parameters:
Returns:
sendMessages
public Mono
Envia um lote de mensagens para a entidade Barramento de Serviço do Azure à qual esse remetente está conectado.
Parameters:
Returns:
sendMessages
public Mono
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:
Returns:
sendMessages
public Mono
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:
Returns:
Aplica-se a
Azure SDK for Java