Partager via


ServiceBusSenderAsyncClient Classe

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

Implémente

public final class ServiceBusSenderAsyncClient
implements AutoCloseable

Client asynchrone pour envoyer des messages à une ressource Service Bus.

Les exemples présentés dans ce document utilisent un objet d’informations d’identification nommé DefaultAzureCredential pour l’authentification, ce qui est approprié pour la plupart des scénarios, y compris les environnements de développement et de production locaux. En outre, nous vous recommandons d’utiliser l’identité managée pour l’authentification dans les environnements de production. Vous trouverez plus d’informations sur les différentes méthodes d’authentification et leurs types d’informations d’identification correspondants dans la documentation Azure Identity .

Exemple : Créer un instance de l’expéditeur

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

Exemple : Envoyer des messages à une ressource Service Bus

// `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.");
 });

Exemple : Envoyer des messages à l’aide d’une ressource Service Bus dont la taille est limitée ServiceBusMessageBatch

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

Exemple : Envoi d’un message à une file d’attente avec session

L’extrait de code ci-dessous illustre l’envoi d’un message à une file d’attente activée pour les sessions Service Bus . La définition setMessageId(String messageId) de la propriété sur « greetings » envoie le message à une session Service Bus avec l’ID « greetings ».

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

Résumé de la méthode

Modificateur et type Méthode et description
Mono<Void> cancelScheduledMessage(long sequenceNumber)

Annule la mise en file d’attente d’un message planifié, s’il n’était pas déjà mis en file d’attente.

Mono<Void> cancelScheduledMessages(Iterable<Long> sequenceNumbers)

Annule la mise en file d’attente d’un message déjà planifié, s’il n’a pas déjà été mis en file d’attente.

void close()

Supprime .ServiceBusSenderAsyncClient

Mono<Void> commitTransaction(ServiceBusTransactionContext transactionContext)

Valide la transaction donnée ServiceBusTransactionContext.

Mono<ServiceBusMessageBatch> createMessageBatch()

Crée un ServiceBusMessageBatch qui peut s’adapter à autant de messages que le transport le permet.

Mono<ServiceBusMessageBatch> createMessageBatch(CreateMessageBatchOptions options)

Crée un ServiceBusMessageBatch configuré avec les options spécifiées.

Mono<ServiceBusTransactionContext> createTransaction()

Démarre une nouvelle transaction sur Service Bus.

String getEntityPath()

Obtient le nom de la ressource Service Bus.

String getFullyQualifiedNamespace()

Obtient l’espace de noms complet.

String getIdentifier()

Obtient l’identificateur du instance de ServiceBusSenderAsyncClient.

Mono<Void> rollbackTransaction(ServiceBusTransactionContext transactionContext)

Restaure la transaction donnée ServiceBusTransactionContext.

Mono<Long> scheduleMessage(ServiceBusMessage message, OffsetDateTime scheduledEnqueueTime)

Envoie un message planifié à l’entité Azure Service Bus à laquelle cet expéditeur est connecté.

Mono<Long> scheduleMessage(ServiceBusMessage message, OffsetDateTime scheduledEnqueueTime, ServiceBusTransactionContext transactionContext)

Envoie un message planifié à l’entité Azure Service Bus à laquelle cet expéditeur est connecté.

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

Envoie un lot de messages planifiés à l’entité Azure Service Bus à laquelle cet expéditeur est connecté.

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

Envoie un message planifié à l’entité Azure Service Bus à laquelle cet expéditeur est connecté.

Mono<Void> sendMessage(ServiceBusMessage message)

Envoie un message à une file d’attente ou à une rubrique Service Bus.

Mono<Void> sendMessage(ServiceBusMessage message, ServiceBusTransactionContext transactionContext)

Envoie un message à une file d’attente ou à une rubrique Service Bus.

Mono<Void> sendMessages(ServiceBusMessageBatch batch)

Envoie un lot de messages à l’entité Azure Service Bus à laquelle cet expéditeur est connecté.

Mono<Void> sendMessages(ServiceBusMessageBatch batch, ServiceBusTransactionContext transactionContext)

Envoie un lot de messages à l’entité Azure Service Bus à laquelle cet expéditeur est connecté.

Mono<Void> sendMessages(Iterable<ServiceBusMessage> messages)

Envoie un ensemble de messages à une file d’attente ou à une rubrique Service Bus à l’aide d’une approche par lots.

Mono<Void> sendMessages(Iterable<ServiceBusMessage> messages, ServiceBusTransactionContext transactionContext)

Envoie un ensemble de messages à une file d’attente ou à une rubrique Service Bus à l’aide d’une approche par lots.

Méthodes héritées de java.lang.Object

Détails de la méthode

cancelScheduledMessage

public Mono cancelScheduledMessage(long sequenceNumber)

Annule la mise en file d’attente d’un message planifié, s’il n’était pas déjà mis en file d’attente.

Parameters:

sequenceNumber - du message planifié à annuler.

Returns:

Mono qui termine cette opération sur la ressource Service Bus.

cancelScheduledMessages

public Mono cancelScheduledMessages(Iterable sequenceNumbers)

Annule la mise en file d’attente d’un message déjà planifié, s’il n’a pas déjà été mis en file d’attente.

Parameters:

sequenceNumbers - des messages planifiés à annuler.

Returns:

Mono qui termine cette opération sur la ressource Service Bus.

close

public void close()

Supprime .ServiceBusSenderAsyncClient Si le client dispose d’une connexion dédiée, la connexion sous-jacente est également fermée.

commitTransaction

public Mono commitTransaction(ServiceBusTransactionContext transactionContext)

Valide la transaction donnée ServiceBusTransactionContext. Vous passerez alors un appel à Service Bus.

Parameters:

transactionContext - à s’engager.

Returns:

Mono qui termine cette opération sur la ressource Service Bus.

createMessageBatch

public Mono createMessageBatch()

Crée un ServiceBusMessageBatch qui peut s’adapter à autant de messages que le transport le permet.

Returns:

ServiceBusMessageBatch qui peut s’adapter à autant de messages que le transport le permet.

createMessageBatch

public Mono createMessageBatch(CreateMessageBatchOptions options)

Crée un ServiceBusMessageBatch configuré avec les options spécifiées.

Parameters:

options - Ensemble d’options utilisées pour configurer .ServiceBusMessageBatch

Returns:

Nouveau ServiceBusMessageBatch configuré avec les options indiquées.

createTransaction

public Mono createTransaction()

Démarre une nouvelle transaction sur Service Bus. Le ServiceBusTransactionContext doit être transmis avec ServiceBusReceivedMessage toutes les opérations qui doivent se trouver dans cette transaction.

Returns:

getEntityPath

public String getEntityPath()

Obtient le nom de la ressource Service Bus.

Returns:

Nom de la ressource Service Bus.

getFullyQualifiedNamespace

public String getFullyQualifiedNamespace()

Obtient l’espace de noms complet.

Returns:

Espace de noms complet.

getIdentifier

public String getIdentifier()

Obtient l’identificateur du instance de ServiceBusSenderAsyncClient.

Returns:

Identificateur qui peut identifier le instance de ServiceBusSenderAsyncClient.

rollbackTransaction

public Mono rollbackTransaction(ServiceBusTransactionContext transactionContext)

Restaure la transaction donnée ServiceBusTransactionContext. Vous passerez alors un appel à Service Bus.

Parameters:

transactionContext - Transaction à restaurer.

Returns:

Mono qui termine cette opération sur la ressource Service Bus.

scheduleMessage

public Mono scheduleMessage(ServiceBusMessage message, OffsetDateTime scheduledEnqueueTime)

Envoie un message planifié à l’entité Azure Service Bus à laquelle cet expéditeur est connecté. Un message planifié est mis en file d’attente et mis à la disposition des récepteurs uniquement à l’heure d’attente planifiée.

Parameters:

message - Message à envoyer à la file d’attente Service Bus.
scheduledEnqueueTime - OffsetDateTime auquel le message doit apparaître dans la file d’attente ou la rubrique Service Bus.

Returns:

Numéro de séquence du message planifié qui peut être utilisé pour annuler la planification du message.

scheduleMessage

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

Envoie un message planifié à l’entité Azure Service Bus à laquelle cet expéditeur est connecté. Un message planifié est mis en file d’attente et mis à la disposition des récepteurs uniquement à l’heure d’attente planifiée.

Parameters:

message - Message à envoyer à la file d’attente Service Bus.
scheduledEnqueueTime - OffsetDateTime auquel le message doit apparaître dans la file d’attente ou la rubrique Service Bus.
transactionContext - à définir sur le message avant l’envoi à Service Bus.

Returns:

Numéro de séquence du message planifié qui peut être utilisé pour annuler la planification du message.

scheduleMessages

public Flux scheduleMessages(Iterable messages, OffsetDateTime scheduledEnqueueTime)

Envoie un lot de messages planifiés à l’entité Azure Service Bus à laquelle cet expéditeur est connecté. Un message planifié est mis en file d’attente et mis à la disposition des récepteurs uniquement à l’heure d’attente planifiée.

Parameters:

messages - Messages à envoyer à la file d’attente ou à la rubrique Service Bus.
scheduledEnqueueTime - OffsetDateTime auquel le message doit apparaître dans la file d’attente ou la rubrique Service Bus.

Returns:

Numéros de séquence des messages planifiés qui peuvent être utilisés pour annuler les messages.

scheduleMessages

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

Envoie un message planifié à l’entité Azure Service Bus à laquelle cet expéditeur est connecté. Un message planifié est mis en file d’attente et mis à la disposition des récepteurs uniquement à l’heure d’attente planifiée.

Parameters:

messages - Messages à envoyer à la file d’attente Service Bus.
scheduledEnqueueTime - OffsetDateTime auquel les messages doivent apparaître dans la file d’attente ou la rubrique Service Bus.
transactionContext - Transaction à associer à l’opération.

Returns:

Numéros de séquence des messages planifiés qui peuvent être utilisés pour annuler les messages.

sendMessage

public Mono sendMessage(ServiceBusMessage message)

Envoie un message à une file d’attente ou à une rubrique Service Bus.

Parameters:

message - Message à envoyer à la file d’attente ou à la rubrique Service Bus.

Returns:

le Mono termine cette opération sur la ressource Service Bus.

sendMessage

public Mono sendMessage(ServiceBusMessage message, ServiceBusTransactionContext transactionContext)

Envoie un message à une file d’attente ou à une rubrique Service Bus.

Parameters:

message - Message à envoyer à la file d’attente ou à la rubrique Service Bus.
transactionContext - à définir sur le message par lot avant l’envoi à Service Bus.

Returns:

le Mono termine cette opération sur la ressource Service Bus.

sendMessages

public Mono sendMessages(ServiceBusMessageBatch batch)

Envoie un lot de messages à l’entité Azure Service Bus à laquelle cet expéditeur est connecté.

Parameters:

batch - de messages qui permet au client d’envoyer la taille maximale autorisée pour un lot de messages.

Returns:

le Mono termine cette opération sur la ressource Service Bus.

sendMessages

public Mono sendMessages(ServiceBusMessageBatch batch, ServiceBusTransactionContext transactionContext)

Envoie un lot de messages à l’entité Azure Service Bus à laquelle cet expéditeur est connecté.

Parameters:

batch - de messages qui permet au client d’envoyer la taille maximale autorisée pour un lot de messages.
transactionContext - à définir sur le message par lot avant l’envoi à Service Bus.

Returns:

le Mono termine cette opération sur la ressource Service Bus.

sendMessages

public Mono sendMessages(Iterable messages)

Envoie un ensemble de messages à une file d’attente ou à une rubrique Service Bus à l’aide d’une approche par lots. Si la taille des messages dépasse la taille maximale d’un lot unique, une exception est déclenchée et l’envoi échoue. Par défaut, la taille du message correspond à la quantité maximale autorisée sur le lien.

Parameters:

messages - Messages à envoyer à la file d’attente ou à la rubrique Service Bus.

Returns:

Mono qui se termine lorsque tous les messages ont été envoyés à la ressource Service Bus.

sendMessages

public Mono sendMessages(Iterable messages, ServiceBusTransactionContext transactionContext)

Envoie un ensemble de messages à une file d’attente ou à une rubrique Service Bus à l’aide d’une approche par lots. Si la taille des messages dépasse la taille maximale d’un lot unique, une exception est déclenchée et l’envoi échoue. Par défaut, la taille du message correspond à la quantité maximale autorisée sur le lien.

Parameters:

messages - Messages à envoyer à la file d’attente ou à la rubrique Service Bus.
transactionContext - à définir sur le message par lot avant l’envoi à Service Bus.

Returns:

Mono qui se termine lorsque tous les messages ont été envoyés à la ressource Service Bus.

S’applique à