ServiceBusSenderClient Classe
- java.
lang. Object - com.
azure. messaging. servicebus. ServiceBusSenderClient
- com.
Implementações
public final class ServiceBusSenderClient
implements AutoCloseable
Um remetente síncrono responsável por enviar ServiceBusMessage para uma fila ou tópico no Barramento de Serviço do Azure.
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"
ServiceBusSenderClient sender = new ServiceBusClientBuilder()
.credential(fullyQualifiedNamespace, credential)
.sender()
.queueName(queueName)
.buildClient();
sender.sendMessage(new ServiceBusMessage("Foo bar"));
Exemplo: enviar mensagens para um recurso do Barramento de Serviço
TokenCredential credential = new DefaultAzureCredentialBuilder().build();
// 'fullyQualifiedNamespace' will look similar to "{your-namespace}.servicebus.windows.net"
ServiceBusSenderClient sender = new ServiceBusClientBuilder()
.credential(fullyQualifiedNamespace, credential)
.sender()
.queueName(queueName)
.buildClient();
List<ServiceBusMessage> messages = Arrays.asList(
new ServiceBusMessage("test-1"),
new ServiceBusMessage("test-2"));
// Creating a batch without options set.
ServiceBusMessageBatch batch = sender.createMessageBatch();
for (ServiceBusMessage message : messages) {
if (batch.tryAddMessage(message)) {
continue;
}
// The batch is full. Send the current batch and create a new one.
sender.sendMessages(batch);
batch = sender.createMessageBatch();
// Add the message we couldn't before.
if (!batch.tryAddMessage(message)) {
throw new IllegalArgumentException("Message is too large for an empty batch.");
}
}
// Send the final batch if there are any messages in it.
if (batch.getCount() > 0) {
sender.sendMessages(batch);
}
// 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();
Exemplo: enviar mensagens usando um tamanho limitado ServiceBusMessageBatch
List<ServiceBusMessage> telemetryMessages = Arrays.asList(firstMessage, secondMessage, thirdMessage);
// 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);
ServiceBusMessageBatch currentBatch = sender.createMessageBatch(options);
// For each telemetry message, we try to add it to the current batch.
// When the batch is full, send it then create another batch to add more mesages to.
for (ServiceBusMessage message : telemetryMessages) {
if (!currentBatch.tryAddMessage(message)) {
sender.sendMessages(currentBatch);
currentBatch = sender.createMessageBatch(options);
// Add the message we couldn't before.
if (!currentBatch.tryAddMessage(message)) {
throw new IllegalArgumentException("Message is too large for an empty batch.");
}
}
}
// Send the final batch if there are any messages in it.
if (currentBatch.getCount() > 0) {
sender.sendMessages(currentBatch);
}
// 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();
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"
ServiceBusSenderClient sender = new ServiceBusClientBuilder()
.credential(fullyQualifiedNamespace, new DefaultAzureCredentialBuilder().build())
.sender()
.queueName(sessionEnabledQueueName)
.buildClient();
// Setting sessionId publishes that message to a specific session, in this case, "greeting".
ServiceBusMessage message = new ServiceBusMessage("Hello world")
.setSessionId("greetings");
sender.sendMessage(message);
// Dispose of the sender.
sender.close();
Resumo do método
Modificador e tipo | Método e descrição |
---|---|
void |
cancelScheduledMessage(long sequenceNumber)
Cancela a enfileiramento de uma mensagem agendada, se ela ainda não estiver enfileirada. |
void |
cancelScheduledMessages(Iterable<Long> sequenceNumbers)
Cancela a enfileiramento de mensagens agendadas, se elas ainda não estiverem enfileiradas. |
void |
close()
Descarta o ServiceBusSenderClient. |
void |
commitTransaction(ServiceBusTransactionContext transactionContext)
Confirma a transação fornecida ServiceBusTransactionContext. |
Service |
createMessageBatch()
Cria um ServiceBusMessageBatch que pode caber quantas mensagens o transporte permitir. |
Service |
createMessageBatch(CreateMessageBatchOptions options)
Cria um ServiceBusMessageBatch configurado com as opções especificadas. |
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 ServiceBusSenderClient. |
void |
rollbackTransaction(ServiceBusTransactionContext transactionContext)
Reverte a transação fornecida e todas as operações associadas a ela. |
Long |
scheduleMessage(ServiceBusMessage message, OffsetDateTime scheduledEnqueueTime)
Envia uma mensagem agendada para a entidade Barramento de Serviço do Azure à qual esse remetente está conectado. |
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. |
Iterable<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. |
Iterable<Long> |
scheduleMessages(Iterable<ServiceBusMessage> messages, OffsetDateTime scheduledEnqueueTime, ServiceBusTransactionContext transactionContext)
Envia um lote de mensagens agendadas para a entidade Barramento de Serviço do Azure à qual esse remetente está conectado. |
void |
sendMessage(ServiceBusMessage message)
Envia uma mensagem para uma fila ou tópico do Barramento de Serviço. |
void |
sendMessage(ServiceBusMessage message, ServiceBusTransactionContext transactionContext)
Envia uma mensagem para uma fila ou tópico do Barramento de Serviço. |
void |
sendMessages(ServiceBusMessageBatch batch)
Envia um lote de mensagens para a entidade Barramento de Serviço do Azure à qual esse remetente está conectado. |
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. |
void |
sendMessages(Iterable<ServiceBusMessage> messages)
Envia um conjunto de para uma fila ou tópico do ServiceBusMessage Barramento de Serviço usando uma abordagem em lote. |
void |
sendMessages(Iterable<ServiceBusMessage> messages, ServiceBusTransactionContext transactionContext)
Envia um conjunto de para uma fila ou tópico do ServiceBusMessage Barramento de Serviço usando uma abordagem em lote. |
Métodos herdados de java.lang.Object
Detalhes do método
cancelScheduledMessage
public void cancelScheduledMessage(long sequenceNumber)
Cancela a enfileiramento de uma mensagem agendada, se ela ainda não estiver enfileirada.
Parameters:
cancelScheduledMessages
public void cancelScheduledMessages(Iterable
Cancela a enfileiramento de mensagens agendadas, se elas ainda não estiverem enfileiradas.
Parameters:
close
public void close()
Descarta o ServiceBusSenderClient. Se o cliente tiver uma conexão dedicada, a conexão subjacente também será fechada.
commitTransaction
public void commitTransaction(ServiceBusTransactionContext transactionContext)
Confirma a transação fornecida ServiceBusTransactionContext.
Parameters:
createMessageBatch
public ServiceBusMessageBatch createMessageBatch()
Cria um ServiceBusMessageBatch que pode caber quantas mensagens o transporte permitir.
Returns:
createMessageBatch
public ServiceBusMessageBatch createMessageBatch(CreateMessageBatchOptions options)
Cria um ServiceBusMessageBatch configurado com as opções especificadas.
Parameters:
Returns:
createTransaction
public ServiceBusTransactionContext createTransaction()
Inicia uma nova transação no Barramento de Serviço. O ServiceBusTransactionContext deve ser passado para 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 ServiceBusSenderClient.
Returns:
rollbackTransaction
public void rollbackTransaction(ServiceBusTransactionContext transactionContext)
Reverte a transação fornecida e todas as operações associadas a ela.
Parameters:
scheduleMessage
public Long 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:
Returns:
scheduleMessage
public 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. Uma mensagem agendada é enfileirada e disponibilizada aos receptores somente no horário de enfileiramento agendado.
Parameters:
Returns:
scheduleMessages
public Iterable
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 Iterable
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:
sendMessage
public void sendMessage(ServiceBusMessage message)
Envia uma mensagem para uma fila ou tópico do Barramento de Serviço.
Parameters:
sendMessage
public void sendMessage(ServiceBusMessage message, ServiceBusTransactionContext transactionContext)
Envia uma mensagem para uma fila ou tópico do Barramento de Serviço.
Parameters:
sendMessages
public void sendMessages(ServiceBusMessageBatch batch)
Envia um lote de mensagens para a entidade Barramento de Serviço do Azure à qual esse remetente está conectado.
Parameters:
sendMessages
public 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.
Parameters:
sendMessages
public void sendMessages(Iterable
Envia um conjunto de para uma fila ou tópico do ServiceBusMessage 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:
sendMessages
public void sendMessages(Iterable
Envia um conjunto de para uma fila ou tópico do ServiceBusMessage 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:
Aplica-se a
Azure SDK for Java