ServiceBusSenderClient Clase
- java.
lang. Object - com.
azure. messaging. servicebus. ServiceBusSenderClient
- com.
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. |
Service |
createMessageBatch()
Crea un ServiceBusMessageBatch objeto que puede caber tantos mensajes como permita el transporte. |
Service |
createMessageBatch(CreateMessageBatchOptions options)
Crea una ServiceBusMessageBatch configuración con las opciones especificadas. |
Service |
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:
cancelScheduledMessages
public void cancelScheduledMessages(Iterable
Cancela la puesta en cola de los mensajes programados, si aún no están en cola.
Parameters:
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:
createMessageBatch
public ServiceBusMessageBatch createMessageBatch()
Crea un ServiceBusMessageBatch objeto que puede caber tantos mensajes como permita el transporte.
Returns:
createMessageBatch
public ServiceBusMessageBatch createMessageBatch(CreateMessageBatchOptions options)
Crea una ServiceBusMessageBatch configuración con las opciones especificadas.
Parameters:
Returns:
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:
getFullyQualifiedNamespace
public String getFullyQualifiedNamespace()
Obtiene el espacio de nombres completo.
Returns:
getIdentifier
public String getIdentifier()
Obtiene el identificador de la instancia de ServiceBusSenderClient.
Returns:
rollbackTransaction
public void rollbackTransaction(ServiceBusTransactionContext transactionContext)
Reversiona la transacción dada y todas las operaciones asociadas a ella.
Parameters:
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:
Returns:
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:
Returns:
scheduleMessages
public Iterable
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:
Returns:
scheduleMessages
public Iterable
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:
Returns:
sendMessage
public void sendMessage(ServiceBusMessage message)
Envía un mensaje a una cola o tema de Service Bus.
Parameters:
sendMessage
public void sendMessage(ServiceBusMessage message, ServiceBusTransactionContext transactionContext)
Envía un mensaje a una cola o tema de Service Bus.
Parameters:
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:
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:
sendMessages
public void sendMessages(Iterable
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:
sendMessages
public void sendMessages(Iterable
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:
Se aplica a
Azure SDK for Java