Freigeben über


ServiceBusSenderAsyncClient Klasse

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

Implementiert

public final class ServiceBusSenderAsyncClient
implements AutoCloseable

Ein asynchroner Client zum Senden von Nachrichten an eine Service Bus-Ressource.

Die in diesem Dokument gezeigten Beispiele verwenden ein Anmeldeinformationsobjekt namens DefaultAzureCredential für die Authentifizierung, das für die meisten Szenarien geeignet ist, einschließlich lokaler Entwicklungs- und Produktionsumgebungen. Darüber hinaus wird die Verwendung einer verwalteten Identität für die Authentifizierung in Produktionsumgebungen empfohlen. Weitere Informationen zu verschiedenen Authentifizierungsmethoden und den entsprechenden Anmeldeinformationstypen finden Sie in der Dokumentation zu Azure Identity."

Beispiel: Erstellen einer instance des Absenders

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

Beispiel: Senden von Nachrichten an eine Service Bus-Ressource

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

Beispiel: Senden von Nachrichten mithilfe einer auf eine Service Bus-Ressource beschränkten ServiceBusMessageBatch Größe

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

Beispiel: Senden einer Nachricht an eine sitzungsfähige Warteschlange

Der folgende Codeausschnitt veranschaulicht das Senden einer Nachricht an eine Warteschlange mit Aktivierter Service Bus-Sitzungen . Wenn Sie die Eigenschaft auf "greetings" festlegen setMessageId(String messageId) , wird die Nachricht an eine Service Bus-Sitzung mit der ID "greetings" gesendet.

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

Methodenzusammenfassung

Modifizierer und Typ Methode und Beschreibung
Mono<Void> cancelScheduledMessage(long sequenceNumber)

Bricht die Warteschlange einer geplanten Nachricht ab, wenn sie noch nicht in die Warteschlange eingereiht wurde.

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

Bricht die Warteschlange einer bereits geplanten Nachricht ab, wenn sie nicht bereits in die Warteschlange eingereiht wurde.

void close()

Veräußert das ServiceBusSenderAsyncClient.

Mono<Void> commitTransaction(ServiceBusTransactionContext transactionContext)

Committet die Transaktion, die angegeben wird ServiceBusTransactionContext.

Mono<ServiceBusMessageBatch> createMessageBatch()

Erstellt eine ServiceBusMessageBatch , die für so viele Nachrichten geeignet ist, wie der Transport zulässt.

Mono<ServiceBusMessageBatch> createMessageBatch(CreateMessageBatchOptions options)

Erstellt eine ServiceBusMessageBatch , die mit den angegebenen Optionen konfiguriert ist.

Mono<ServiceBusTransactionContext> createTransaction()

Startet eine neue Transaktion in Service Bus.

String getEntityPath()

Ruft den Namen der Service Bus-Ressource ab.

String getFullyQualifiedNamespace()

Ruft den vollqualifizierten Namespace ab.

String getIdentifier()

Ruft den Bezeichner des instance von abServiceBusSenderAsyncClient.

Mono<Void> rollbackTransaction(ServiceBusTransactionContext transactionContext)

Rollbacks für die Transaktion, die angegeben ist ServiceBusTransactionContext.

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

Sendet eine geplante Nachricht an die Azure Service Bus Entität, mit der dieser Absender verbunden ist.

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

Sendet eine geplante Nachricht an die Azure Service Bus Entität, mit der dieser Absender verbunden ist.

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

Sendet einen Batch geplanter Nachrichten an die Azure Service Bus Entität, mit der der Absender verbunden ist.

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

Sendet geplante Nachrichten an die Azure Service Bus Entität, mit der dieser Absender verbunden ist.

Mono<Void> sendMessage(ServiceBusMessage message)

Sendet eine Nachricht an eine Service Bus-Warteschlange oder ein Service Bus-Thema.

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

Sendet eine Nachricht an eine Service Bus-Warteschlange oder ein Service Bus-Thema.

Mono<Void> sendMessages(ServiceBusMessageBatch batch)

Sendet einen Nachrichtenbatch an die Azure Service Bus Entität, mit der dieser Absender verbunden ist.

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

Sendet einen Nachrichtenbatch an die Azure Service Bus Entität, mit der dieser Absender verbunden ist.

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

Sendet eine Reihe von Nachrichten mithilfe eines Batchansatzes an eine Service Bus-Warteschlange oder ein Service Bus-Thema.

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

Sendet eine Reihe von Nachrichten mithilfe eines Batchansatzes an eine Service Bus-Warteschlange oder ein Service Bus-Thema.

Geerbte Methoden von java.lang.Object

Details zur Methode

cancelScheduledMessage

public Mono cancelScheduledMessage(long sequenceNumber)

Bricht die Warteschlange einer geplanten Nachricht ab, wenn sie noch nicht in die Warteschlange eingereiht wurde.

Parameters:

sequenceNumber - der geplanten Nachricht, die abgebrochen werden soll.

Returns:

Der Mono , der diesen Vorgang für die Service Bus-Ressource beendet.

cancelScheduledMessages

public Mono cancelScheduledMessages(Iterable sequenceNumbers)

Bricht die Warteschlange einer bereits geplanten Nachricht ab, wenn sie nicht bereits in die Warteschlange eingereiht wurde.

Parameters:

sequenceNumbers - der geplanten Nachrichten, die abgebrochen werden sollen.

Returns:

Der Mono , der diesen Vorgang für die Service Bus-Ressource beendet.

close

public void close()

Veräußert das ServiceBusSenderAsyncClient. Wenn der Client über eine dedizierte Verbindung verfügt, wird auch die zugrunde liegende Verbindung geschlossen.

commitTransaction

public Mono commitTransaction(ServiceBusTransactionContext transactionContext)

Committet die Transaktion, die angegeben wird ServiceBusTransactionContext. Dadurch wird Service Bus aufgerufen.

Parameters:

transactionContext - zu verpflichten.

Returns:

Der Mono , der diesen Vorgang für die Service Bus-Ressource beendet.

createMessageBatch

public Mono createMessageBatch()

Erstellt eine ServiceBusMessageBatch , die für so viele Nachrichten geeignet ist, wie der Transport zulässt.

Returns:

Ein ServiceBusMessageBatch , der so viele Nachrichten anpassen kann, wie der Transport zulässt.

createMessageBatch

public Mono createMessageBatch(CreateMessageBatchOptions options)

Erstellt eine ServiceBusMessageBatch , die mit den angegebenen Optionen konfiguriert ist.

Parameters:

options - Eine Reihe von Optionen, die zum Konfigurieren von ServiceBusMessageBatchverwendet werden.

Returns:

Eine neu ServiceBusMessageBatch konfigurierte mit den angegebenen Optionen.

createTransaction

public Mono createTransaction()

Startet eine neue Transaktion in Service Bus. Sollte ServiceBusTransactionContext zusammen mit ServiceBusReceivedMessage allen Vorgängen übergeben werden, die in dieser Transaktion sein müssen.

Returns:

getEntityPath

public String getEntityPath()

Ruft den Namen der Service Bus-Ressource ab.

Returns:

Der Name der Service Bus-Ressource.

getFullyQualifiedNamespace

public String getFullyQualifiedNamespace()

Ruft den vollqualifizierten Namespace ab.

Returns:

Der vollqualifizierte Namespace.

getIdentifier

public String getIdentifier()

Ruft den Bezeichner des instance von abServiceBusSenderAsyncClient.

Returns:

Der Bezeichner, der die instance von ServiceBusSenderAsyncClientidentifizieren kann.

rollbackTransaction

public Mono rollbackTransaction(ServiceBusTransactionContext transactionContext)

Rollbacks für die Transaktion, die angegeben ist ServiceBusTransactionContext. Dadurch wird Service Bus aufgerufen.

Parameters:

transactionContext - Transaktion zum Rollback.

Returns:

Der Mono , der diesen Vorgang für die Service Bus-Ressource beendet.

scheduleMessage

public Mono scheduleMessage(ServiceBusMessage message, OffsetDateTime scheduledEnqueueTime)

Sendet eine geplante Nachricht an die Azure Service Bus Entität, mit der dieser Absender verbunden ist. Eine geplante Nachricht wird in die Warteschlange eingereiht und den Empfängern nur zur geplanten Warteschlange zur Verfügung gestellt.

Parameters:

message - Nachricht, die an die Service Bus-Warteschlange gesendet werden soll.
scheduledEnqueueTime - OffsetDateTime, bei dem die Nachricht in der Service Bus-Warteschlange oder dem Service Bus-Thema angezeigt werden soll.

Returns:

Die Sequenznummer der geplanten Nachricht, die verwendet werden kann, um die Planung der Nachricht abzubrechen.

scheduleMessage

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

Sendet eine geplante Nachricht an die Azure Service Bus Entität, mit der dieser Absender verbunden ist. Eine geplante Nachricht wird in die Warteschlange eingereiht und den Empfängern nur zur geplanten Queuezeit zur Verfügung gestellt.

Parameters:

message - Nachricht, die an die Service Bus-Warteschlange gesendet werden soll.
scheduledEnqueueTime - OffsetDateTime, bei dem die Nachricht in der Service Bus-Warteschlange oder dem Service Bus-Thema angezeigt werden soll.
transactionContext - vor dem Senden an Service Bus für eine Nachricht festgelegt werden soll.

Returns:

Die Sequenznummer der geplanten Nachricht, die verwendet werden kann, um die Planung der Nachricht abzubrechen.

scheduleMessages

public Flux scheduleMessages(Iterable messages, OffsetDateTime scheduledEnqueueTime)

Sendet einen Batch geplanter Nachrichten an die Azure Service Bus Entität, mit der der Absender verbunden ist. Eine geplante Nachricht wird in die Warteschlange eingereiht und den Empfängern nur zur geplanten Queuezeit zur Verfügung gestellt.

Parameters:

messages - Nachrichten, die an die Service Bus-Warteschlange oder das Service Bus-Thema gesendet werden sollen.
scheduledEnqueueTime - OffsetDateTime, bei dem die Nachricht in der Service Bus-Warteschlange oder dem Service Bus-Thema angezeigt werden soll.

Returns:

Sequenznummern der geplanten Nachrichten, die zum Abbrechen der Nachrichten verwendet werden können.

scheduleMessages

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

Sendet geplante Nachrichten an die Azure Service Bus Entität, mit der dieser Absender verbunden ist. Eine geplante Nachricht wird in die Warteschlange eingereiht und den Empfängern nur zur geplanten Queuezeit zur Verfügung gestellt.

Parameters:

messages - Nachrichten, die an die Service Bus-Warteschlange gesendet werden sollen.
scheduledEnqueueTime - OffsetDateTime, bei dem die Nachrichten in der Service Bus-Warteschlange oder dem Service Bus-Thema angezeigt werden sollen.
transactionContext - Transaktion, die dem Vorgang zugeordnet werden soll.

Returns:

Sequenznummern der geplanten Nachrichten, die zum Abbrechen der Nachrichten verwendet werden können.

sendMessage

public Mono sendMessage(ServiceBusMessage message)

Sendet eine Nachricht an eine Service Bus-Warteschlange oder ein Service Bus-Thema.

Parameters:

message - Nachricht, die an die Service Bus-Warteschlange oder das Service Bus-Thema gesendet werden soll.

Returns:

Der Mono beendet diesen Vorgang für die Service Bus-Ressource.

sendMessage

public Mono sendMessage(ServiceBusMessage message, ServiceBusTransactionContext transactionContext)

Sendet eine Nachricht an eine Service Bus-Warteschlange oder ein Service Bus-Thema.

Parameters:

message - Nachricht, die an die Service Bus-Warteschlange oder das Service Bus-Thema gesendet werden soll.
transactionContext - vor dem Senden an Service Bus für eine Batchnachricht festgelegt werden soll.

Returns:

Der Mono beendet diesen Vorgang für die Service Bus-Ressource.

sendMessages

public Mono sendMessages(ServiceBusMessageBatch batch)

Sendet einen Nachrichtenbatch an die Azure Service Bus Entität, mit der dieser Absender verbunden ist.

Parameters:

batch - von Nachrichten, die es dem Client ermöglichen, die maximal zulässige Größe für einen Nachrichtenbatch zu senden.

Returns:

Ein Mono , der diesen Vorgang für die Service Bus-Ressource abgeschlossen hat.

sendMessages

public Mono sendMessages(ServiceBusMessageBatch batch, ServiceBusTransactionContext transactionContext)

Sendet einen Nachrichtenbatch an die Azure Service Bus Entität, mit der dieser Absender verbunden ist.

Parameters:

batch - von Nachrichten, die es dem Client ermöglichen, die maximal zulässige Größe für einen Nachrichtenbatch zu senden.
transactionContext - vor dem Senden an Service Bus für eine Batchnachricht festgelegt werden soll.

Returns:

Ein Mono , der diesen Vorgang für die Service Bus-Ressource abgeschlossen hat.

sendMessages

public Mono sendMessages(Iterable messages)

Sendet eine Reihe von Nachrichten mithilfe eines Batchansatzes an eine Service Bus-Warteschlange oder ein Service Bus-Thema. Wenn die Größe der Nachrichten die maximale Größe eines einzelnen Batches überschreitet, wird eine Ausnahme ausgelöst, und der Sendevorgang schlägt fehl. Standardmäßig ist die Nachrichtengröße der maximal zulässige Betrag für den Link.

Parameters:

messages - Nachrichten, die an die Service Bus-Warteschlange oder das Service Bus-Thema gesendet werden sollen.

Returns:

Eine Mono , die abgeschlossen wird, wenn alle Nachrichten an die Service Bus-Ressource gesendet wurden.

sendMessages

public Mono sendMessages(Iterable messages, ServiceBusTransactionContext transactionContext)

Sendet eine Reihe von Nachrichten mithilfe eines Batchansatzes an eine Service Bus-Warteschlange oder ein Service Bus-Thema. Wenn die Größe der Nachrichten die maximale Größe eines einzelnen Batches überschreitet, wird eine Ausnahme ausgelöst, und der Sendevorgang schlägt fehl. Standardmäßig ist die Nachrichtengröße der maximal zulässige Betrag für den Link.

Parameters:

messages - Nachrichten, die an die Service Bus-Warteschlange oder das Service Bus-Thema gesendet werden sollen.
transactionContext - vor dem Senden an Service Bus für eine Batchnachricht festgelegt werden soll.

Returns:

Eine Mono , die abgeschlossen wird, wenn alle Nachrichten an die Service Bus-Ressource gesendet wurden.

Gilt für: