Partilhar via


ServiceBusSenderClient Classe

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

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.

ServiceBusMessageBatch createMessageBatch()

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

ServiceBusMessageBatch createMessageBatch(CreateMessageBatchOptions options)

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

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 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:

sequenceNumber - O número de sequência da mensagem a ser cancelada.

cancelScheduledMessages

public void cancelScheduledMessages(Iterable sequenceNumbers)

Cancela a enfileiramento de mensagens agendadas, se elas ainda não estiverem enfileiradas.

Parameters:

sequenceNumbers - Os números de sequência de mensagens a serem canceladas.

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:

transactionContext - a ser confirmado.

createMessageBatch

public ServiceBusMessageBatch 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 ServiceBusMessageBatch 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 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:

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 ServiceBusSenderClient.

Returns:

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

rollbackTransaction

public void rollbackTransaction(ServiceBusTransactionContext transactionContext)

Reverte a transação fornecida e todas as operações associadas a ela.

Parameters:

transactionContext - A transação a ser revertida.

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:

message - Mensagem a ser enviada para a Fila ou Tópico do Barramento de Serviço.
scheduledEnqueueTime - Datetime em que 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 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:

message - Mensagem a ser enviada para a Fila ou Tópico do Barramento de Serviço.
scheduledEnqueueTime - Datetime em que 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 Iterable 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 - Instantâneo 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 Iterable scheduleMessages(Iterable 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. 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 - Instantâneo no qual a mensagem deve 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 void 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.

sendMessage

public void 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 antes de enviar para o Barramento de Serviço.

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:

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

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:

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

sendMessages

public void sendMessages(Iterable messages)

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:

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

sendMessages

public void sendMessages(Iterable messages, ServiceBusTransactionContext transactionContext)

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:

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

Aplica-se a