ServiceBusSenderAsyncClient Klasse
- java.
lang. Object - com.
azure. messaging. servicebus. ServiceBusSenderAsyncClient
- com.
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<Service |
createMessageBatch()
Erstellt eine ServiceBusMessageBatch , die für so viele Nachrichten geeignet ist, wie der Transport zulässt. |
Mono<Service |
createMessageBatch(CreateMessageBatchOptions options)
Erstellt eine ServiceBusMessageBatch , die mit den angegebenen Optionen konfiguriert ist. |
Mono<Service |
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
Bricht die Warteschlange einer geplanten Nachricht ab, wenn sie noch nicht in die Warteschlange eingereiht wurde.
Parameters:
Returns:
cancelScheduledMessages
public Mono
Bricht die Warteschlange einer bereits geplanten Nachricht ab, wenn sie nicht bereits in die Warteschlange eingereiht wurde.
Parameters:
Returns:
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
Committet die Transaktion, die angegeben wird ServiceBusTransactionContext. Dadurch wird Service Bus aufgerufen.
Parameters:
Returns:
createMessageBatch
public Mono
Erstellt eine ServiceBusMessageBatch , die für so viele Nachrichten geeignet ist, wie der Transport zulässt.
Returns:
createMessageBatch
public Mono
Erstellt eine ServiceBusMessageBatch , die mit den angegebenen Optionen konfiguriert ist.
Parameters:
Returns:
createTransaction
public Mono
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:
getFullyQualifiedNamespace
public String getFullyQualifiedNamespace()
Ruft den vollqualifizierten Namespace ab.
Returns:
getIdentifier
public String getIdentifier()
Ruft den Bezeichner des instance von abServiceBusSenderAsyncClient.
Returns:
rollbackTransaction
public Mono
Rollbacks für die Transaktion, die angegeben ist ServiceBusTransactionContext. Dadurch wird Service Bus aufgerufen.
Parameters:
Returns:
scheduleMessage
public Mono
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:
Returns:
scheduleMessage
public Mono
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:
Returns:
scheduleMessages
public Flux
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:
Returns:
scheduleMessages
public Flux
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:
Returns:
sendMessage
public Mono
Sendet eine Nachricht an eine Service Bus-Warteschlange oder ein Service Bus-Thema.
Parameters:
Returns:
sendMessage
public Mono
Sendet eine Nachricht an eine Service Bus-Warteschlange oder ein Service Bus-Thema.
Parameters:
Returns:
sendMessages
public Mono
Sendet einen Nachrichtenbatch an die Azure Service Bus Entität, mit der dieser Absender verbunden ist.
Parameters:
Returns:
sendMessages
public Mono
Sendet einen Nachrichtenbatch an die Azure Service Bus Entität, mit der dieser Absender verbunden ist.
Parameters:
Returns:
sendMessages
public Mono
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:
Returns:
sendMessages
public Mono
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:
Returns:
Gilt für:
Azure SDK for Java