Compartir a través de


ServiceBusSenderClient Clase

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

Implementaciones

public final class ServiceBusSenderClient
implements AutoCloseable

Remitente sincrónico responsable del envío ServiceBusMessage a una cola o tema en Azure Service Bus.

Los ejemplos que se muestran en este documento usan un objeto de credencial denominado DefaultAzureCredential para la autenticación, que es adecuado para la mayoría de los escenarios, incluidos los entornos de desarrollo y producción locales. Además, se recomienda usar la identidad administrada para la autenticación en entornos de producción. Puede encontrar más información sobre las distintas formas de autenticación y sus tipos de credenciales correspondientes en la documentación de Identidad de Azure".

Ejemplo: Creación de una instancia de remitente

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"));

Ejemplo: Envío de mensajes a un recurso de Service Bus

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();

Ejemplo: Envío de mensajes con un tamaño 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();

Ejemplo: Envío de un mensaje a una cola habilitada para sesión

En el fragmento de código siguiente se muestra cómo enviar un mensaje a una cola habilitada para sesiones de Service Bus . Al establecer setMessageId(String messageId) la propiedad en "greetings" se enviará el mensaje a una sesión de Service Bus con un identificador de "greetings".

// '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();

Resumen del método

Modificador y tipo Método y descripción
void cancelScheduledMessage(long sequenceNumber)

Cancela la puesta en cola de un mensaje programado, si aún no están en cola.

void cancelScheduledMessages(Iterable<Long> sequenceNumbers)

Cancela la puesta en cola de los mensajes programados, si aún no están en cola.

void close()

Elimina de ServiceBusSenderClient.

void commitTransaction(ServiceBusTransactionContext transactionContext)

Confirma la transacción dada ServiceBusTransactionContext.

ServiceBusMessageBatch createMessageBatch()

Crea un ServiceBusMessageBatch objeto que puede caber tantos mensajes como permita el transporte.

ServiceBusMessageBatch createMessageBatch(CreateMessageBatchOptions options)

Crea una ServiceBusMessageBatch configuración con las opciones especificadas.

ServiceBusTransactionContext createTransaction()

Inicia una nueva transacción en Service Bus.

String getEntityPath()

Obtiene el nombre del recurso de Service Bus.

String getFullyQualifiedNamespace()

Obtiene el espacio de nombres completo.

String getIdentifier()

Obtiene el identificador de la instancia de ServiceBusSenderClient.

void rollbackTransaction(ServiceBusTransactionContext transactionContext)

Reversiona la transacción dada y todas las operaciones asociadas a ella.

Long scheduleMessage(ServiceBusMessage message, OffsetDateTime scheduledEnqueueTime)

Envía un mensaje programado a la entidad Azure Service Bus a la que está conectado este remitente.

Long scheduleMessage(ServiceBusMessage message, OffsetDateTime scheduledEnqueueTime, ServiceBusTransactionContext transactionContext)

Envía un mensaje programado a la entidad Azure Service Bus a la que está conectado este remitente.

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

Envía un lote de mensajes programados a la entidad Azure Service Bus a la que está conectado este remitente.

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

Envía un lote de mensajes programados a la entidad Azure Service Bus a la que está conectado este remitente.

void sendMessage(ServiceBusMessage message)

Envía un mensaje a una cola o tema de Service Bus.

void sendMessage(ServiceBusMessage message, ServiceBusTransactionContext transactionContext)

Envía un mensaje a una cola o tema de Service Bus.

void sendMessages(ServiceBusMessageBatch batch)

Envía un lote de mensajes a la entidad Azure Service Bus a la que está conectado este remitente.

void sendMessages(ServiceBusMessageBatch batch, ServiceBusTransactionContext transactionContext)

Envía un lote de mensajes a la entidad Azure Service Bus a la que está conectado este remitente.

void sendMessages(Iterable<ServiceBusMessage> messages)

Envía un conjunto de a una cola o tema de ServiceBusMessage Service Bus mediante un enfoque por lotes.

void sendMessages(Iterable<ServiceBusMessage> messages, ServiceBusTransactionContext transactionContext)

Envía un conjunto de a una cola o tema de ServiceBusMessage Service Bus mediante un enfoque por lotes.

Métodos heredados de java.lang.Object

Detalles del método

cancelScheduledMessage

public void cancelScheduledMessage(long sequenceNumber)

Cancela la puesta en cola de un mensaje programado, si aún no están en cola.

Parameters:

sequenceNumber - Número de secuencia del mensaje que se va a cancelar.

cancelScheduledMessages

public void cancelScheduledMessages(Iterable sequenceNumbers)

Cancela la puesta en cola de los mensajes programados, si aún no están en cola.

Parameters:

sequenceNumbers - Número de secuencia de mensajes que se van a cancelar.

close

public void close()

Elimina de ServiceBusSenderClient. Si el cliente tiene una conexión dedicada, también se cierra la conexión subyacente.

commitTransaction

public void commitTransaction(ServiceBusTransactionContext transactionContext)

Confirma la transacción dada ServiceBusTransactionContext.

Parameters:

transactionContext - que se va a confirmar.

createMessageBatch

public ServiceBusMessageBatch createMessageBatch()

Crea un ServiceBusMessageBatch objeto que puede caber tantos mensajes como permita el transporte.

Returns:

que ServiceBusMessageBatch puede caber tantos mensajes como permita el transporte.

createMessageBatch

public ServiceBusMessageBatch createMessageBatch(CreateMessageBatchOptions options)

Crea una ServiceBusMessageBatch configuración con las opciones especificadas.

Parameters:

options - Conjunto de opciones usadas para configurar .ServiceBusMessageBatch

Returns:

ServiceBusMessageBatch Nuevo configurado con las opciones especificadas.

createTransaction

public ServiceBusTransactionContext createTransaction()

Inicia una nueva transacción en Service Bus. ServiceBusTransactionContext Debe pasarse a todas las operaciones que deben estar en esta transacción.

Returns:

getEntityPath

public String getEntityPath()

Obtiene el nombre del recurso de Service Bus.

Returns:

Nombre del recurso de Service Bus.

getFullyQualifiedNamespace

public String getFullyQualifiedNamespace()

Obtiene el espacio de nombres completo.

Returns:

Espacio de nombres completo.

getIdentifier

public String getIdentifier()

Obtiene el identificador de la instancia de ServiceBusSenderClient.

Returns:

Identificador que puede identificar la instancia de ServiceBusSenderClient.

rollbackTransaction

public void rollbackTransaction(ServiceBusTransactionContext transactionContext)

Reversiona la transacción dada y todas las operaciones asociadas a ella.

Parameters:

transactionContext - Transacción que se va a revertir.

scheduleMessage

public Long scheduleMessage(ServiceBusMessage message, OffsetDateTime scheduledEnqueueTime)

Envía un mensaje programado a la entidad Azure Service Bus a la que está conectado este remitente. Se pone en cola un mensaje programado y se pone a disposición de los receptores solo en la hora de puesta en cola programada.

Parameters:

message - Mensaje que se va a enviar a la cola o al tema de Service Bus.
scheduledEnqueueTime - Fecha y hora en la que el mensaje debe aparecer en la cola o el tema de Service Bus.

Returns:

Número de secuencia del mensaje programado que se puede usar para cancelar la programación del mensaje.

scheduleMessage

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

Envía un mensaje programado a la entidad Azure Service Bus a la que está conectado este remitente. Se pone en cola un mensaje programado y se pone a disposición de los receptores solo en la hora de puesta en cola programada.

Parameters:

message - Mensaje que se va a enviar a la cola o al tema de Service Bus.
scheduledEnqueueTime - Fecha y hora en la que el mensaje debe aparecer en la cola o el tema de Service Bus.
transactionContext - para establecerlo en el mensaje antes de enviarlo a Service Bus.

Returns:

Número de secuencia del mensaje programado que se puede usar para cancelar la programación del mensaje.

scheduleMessages

public Iterable scheduleMessages(Iterable messages, OffsetDateTime scheduledEnqueueTime)

Envía un lote de mensajes programados a la entidad Azure Service Bus a la que está conectado este remitente. Se pone en cola un mensaje programado y se pone a disposición de los receptores solo en la hora de puesta en cola programada.

Parameters:

messages - Mensajes que se enviarán a la cola o al tema de Service Bus.
scheduledEnqueueTime - Instantánea en la que el mensaje debe aparecer en la cola o el tema de Service Bus.

Returns:

Números de secuencia de los mensajes programados que se pueden usar para cancelar los mensajes.

scheduleMessages

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

Envía un lote de mensajes programados a la entidad Azure Service Bus a la que está conectado este remitente. Se pone en cola un mensaje programado y se pone a disposición de los receptores solo en la hora de puesta en cola programada.

Parameters:

messages - Mensajes que se van a enviar a la cola o al tema de Service Bus.
scheduledEnqueueTime - Instantánea en la que el mensaje debe aparecer en la cola o el tema de Service Bus.
transactionContext - Transacción que se va a asociar a la operación.

Returns:

Números de secuencia de los mensajes programados que se pueden usar para cancelar los mensajes.

sendMessage

public void sendMessage(ServiceBusMessage message)

Envía un mensaje a una cola o tema de Service Bus.

Parameters:

message - Mensaje que se va a enviar a la cola o al tema de Service Bus.

sendMessage

public void sendMessage(ServiceBusMessage message, ServiceBusTransactionContext transactionContext)

Envía un mensaje a una cola o tema de Service Bus.

Parameters:

message - Mensaje que se va a enviar a la cola o al tema de Service Bus.
transactionContext - para establecerlo en el mensaje antes de enviarlo a Service Bus.

sendMessages

public void sendMessages(ServiceBusMessageBatch batch)

Envía un lote de mensajes a la entidad Azure Service Bus a la que está conectado este remitente.

Parameters:

batch - de mensajes que permiten al cliente enviar el tamaño máximo permitido para un lote de mensajes.

sendMessages

public void sendMessages(ServiceBusMessageBatch batch, ServiceBusTransactionContext transactionContext)

Envía un lote de mensajes a la entidad Azure Service Bus a la que está conectado este remitente.

Parameters:

batch - de mensajes que permiten al cliente enviar el tamaño máximo permitido para un lote de mensajes.
transactionContext - para establecerlo en el mensaje antes de enviarlo a Service Bus.

sendMessages

public void sendMessages(Iterable messages)

Envía un conjunto de a una cola o tema de ServiceBusMessage Service Bus mediante un enfoque por lotes. Si el tamaño de los mensajes supera el tamaño máximo de un solo lote, se desencadenará una excepción y se producirá un error en el envío. De forma predeterminada, el tamaño del mensaje es la cantidad máxima permitida en el vínculo.

Parameters:

messages - Mensajes que se van a enviar a la cola o al tema de Service Bus.

sendMessages

public void sendMessages(Iterable messages, ServiceBusTransactionContext transactionContext)

Envía un conjunto de a una cola o tema de ServiceBusMessage Service Bus mediante un enfoque por lotes. Si el tamaño de los mensajes supera el tamaño máximo de un solo lote, se desencadenará una excepción y se producirá un error en el envío. De forma predeterminada, el tamaño del mensaje es la cantidad máxima permitida en el vínculo.

Parameters:

messages - Mensajes que se van a enviar a la cola o al tema de Service Bus.
transactionContext - para establecerlo en el mensaje antes de enviarlo a Service Bus.

Se aplica a