ServiceBusSenderAsyncClient Classe
- java.
lang. Object - com.
azure. messaging. servicebus. ServiceBusSenderAsyncClient
- com.
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<Service |
createMessageBatch()
Crée un ServiceBusMessageBatch qui peut s’adapter à autant de messages que le transport le permet. |
Mono<Service |
createMessageBatch(CreateMessageBatchOptions options)
Crée un ServiceBusMessageBatch configuré avec les options spécifiées. |
Mono<Service |
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
Annule la mise en file d’attente d’un message planifié, s’il n’était pas déjà mis en file d’attente.
Parameters:
Returns:
cancelScheduledMessages
public Mono
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:
Returns:
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
Valide la transaction donnée ServiceBusTransactionContext. Vous passerez alors un appel à Service Bus.
Parameters:
Returns:
createMessageBatch
public Mono
Crée un ServiceBusMessageBatch qui peut s’adapter à autant de messages que le transport le permet.
Returns:
createMessageBatch
public Mono
Crée un ServiceBusMessageBatch configuré avec les options spécifiées.
Parameters:
Returns:
createTransaction
public Mono
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:
getFullyQualifiedNamespace
public String getFullyQualifiedNamespace()
Obtient l’espace de noms complet.
Returns:
getIdentifier
public String getIdentifier()
Obtient l’identificateur du instance de ServiceBusSenderAsyncClient.
Returns:
rollbackTransaction
public Mono
Restaure la transaction donnée ServiceBusTransactionContext. Vous passerez alors un appel à Service Bus.
Parameters:
Returns:
scheduleMessage
public Mono
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:
Returns:
scheduleMessage
public Mono
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:
Returns:
scheduleMessages
public Flux
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:
Returns:
scheduleMessages
public Flux
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:
Returns:
sendMessage
public Mono
Envoie un message à une file d’attente ou à une rubrique Service Bus.
Parameters:
Returns:
sendMessage
public Mono
Envoie un message à une file d’attente ou à une rubrique Service Bus.
Parameters:
Returns:
sendMessages
public Mono
Envoie un lot de messages à l’entité Azure Service Bus à laquelle cet expéditeur est connecté.
Parameters:
Returns:
sendMessages
public Mono
Envoie un lot de messages à l’entité Azure Service Bus à laquelle cet expéditeur est connecté.
Parameters:
Returns:
sendMessages
public Mono
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:
Returns:
sendMessages
public Mono
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:
Returns:
S’applique à
Azure SDK for Java