Freigeben über


ServiceBusSenderClient Klasse

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

Implementiert

public final class ServiceBusSenderClient
implements AutoCloseable

Ein synchroner Absender, der für das Senden ServiceBusMessage an eine Warteschlange oder ein Thema auf Azure Service Bus verantwortlich ist.

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 empfohlen, die verwaltete Identität für die Authentifizierung in Produktionsumgebungen zu verwenden. Weitere Informationen zu verschiedenen Authentifizierungsmethoden und den entsprechenden Anmeldeinformationstypen finden Sie in der Azure Identity-Dokumentation.

Beispiel: Erstellen eines instance des Absenders

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

Beispiel: Senden von Nachrichten an eine Service Bus-Ressource

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

Beispiel: Senden von Nachrichten mit einer größenbeschränkten 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();

Beispiel: Senden einer Nachricht an eine sitzungsfähige Warteschlange

Der folgende Codeausschnitt veranschaulicht das Senden einer Nachricht an eine Service Bus-Sitzungswarteschlange , die aktiviert ist. Durch Festlegen setMessageId(String messageId) der Eigenschaft auf "Greetings" wird die Nachricht an eine Service Bus-Sitzung mit der ID "Greetings" gesendet.

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

Methodenzusammenfassung

Modifizierer und Typ Methode und Beschreibung
void cancelScheduledMessage(long sequenceNumber)

Bricht das Queuing einer geplanten Nachricht ab, wenn sie noch nicht in die Warteschlange gestellt wurde.

void cancelScheduledMessages(Iterable<Long> sequenceNumbers)

Bricht das Queuing geplanter Nachrichten ab, wenn sie nicht bereits in die Warteschlange gestellt wurden.

void close()

Veräußert den ServiceBusSenderClient.

void commitTransaction(ServiceBusTransactionContext transactionContext)

Committ die angegebene ServiceBusTransactionContextTransaktion.

ServiceBusMessageBatch createMessageBatch()

Erstellt eine ServiceBusMessageBatch , die so viele Nachrichten anpassen kann, wie der Transport zulässt.

ServiceBusMessageBatch createMessageBatch(CreateMessageBatchOptions options)

Erstellt einen ServiceBusMessageBatch , der mit den angegebenen Optionen konfiguriert ist.

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 abServiceBusSenderClient.

void rollbackTransaction(ServiceBusTransactionContext transactionContext)

Rollbacks für die angegebene Transaktion und alle ihr zugeordneten Vorgänge.

Long scheduleMessage(ServiceBusMessage message, OffsetDateTime scheduledEnqueueTime)

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

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.

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

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

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

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

void sendMessage(ServiceBusMessage message)

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

void sendMessage(ServiceBusMessage message, ServiceBusTransactionContext transactionContext)

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

void sendMessages(ServiceBusMessageBatch batch)

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

void sendMessages(ServiceBusMessageBatch batch, ServiceBusTransactionContext transactionContext)

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

void sendMessages(Iterable<ServiceBusMessage> messages)

Sendet eine Gruppe von ServiceBusMessage an eine Service Bus-Warteschlange oder ein Service Bus-Thema mithilfe eines Batchansatzes.

void sendMessages(Iterable<ServiceBusMessage> messages, ServiceBusTransactionContext transactionContext)

Sendet eine Gruppe von ServiceBusMessage an eine Service Bus-Warteschlange oder ein Service Bus-Thema mithilfe eines Batchansatzes.

Geerbte Methoden von java.lang.Object

Details zur Methode

cancelScheduledMessage

public void cancelScheduledMessage(long sequenceNumber)

Bricht das Queuing einer geplanten Nachricht ab, wenn sie noch nicht in die Warteschlange gestellt wurde.

Parameters:

sequenceNumber - Die Sequenznummer der nachricht, die abgebrochen werden soll.

cancelScheduledMessages

public void cancelScheduledMessages(Iterable sequenceNumbers)

Bricht das Queuing geplanter Nachrichten ab, wenn sie nicht bereits in die Warteschlange gestellt wurden.

Parameters:

sequenceNumbers - Die Sequenznummern der abzubrechenden Nachrichten.

close

public void close()

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

commitTransaction

public void commitTransaction(ServiceBusTransactionContext transactionContext)

Committ die angegebene ServiceBusTransactionContextTransaktion.

Parameters:

transactionContext - verpflichtet zu werden.

createMessageBatch

public ServiceBusMessageBatch createMessageBatch()

Erstellt eine ServiceBusMessageBatch , die so viele Nachrichten anpassen kann, wie der Transport zulässt.

Returns:

Eine ServiceBusMessageBatch , die so viele Nachrichten passen kann, wie der Transport zulässt.

createMessageBatch

public ServiceBusMessageBatch createMessageBatch(CreateMessageBatchOptions options)

Erstellt einen ServiceBusMessageBatch , der mit den angegebenen Optionen konfiguriert ist.

Parameters:

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

Returns:

Eine neue ServiceBusMessageBatch Konfiguration mit den angegebenen Optionen.

createTransaction

public ServiceBusTransactionContext createTransaction()

Startet eine neue Transaktion in Service Bus. Sollte ServiceBusTransactionContext an alle Vorgänge ü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 abServiceBusSenderClient.

Returns:

Der Bezeichner, der die instance von ServiceBusSenderClientidentifizieren kann.

rollbackTransaction

public void rollbackTransaction(ServiceBusTransactionContext transactionContext)

Rollbacks für die angegebene Transaktion und alle ihr zugeordneten Vorgänge.

Parameters:

transactionContext - Die Transaktion, die ein Rollback auszuführen ist.

scheduleMessage

public Long 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 Queuezeit zur Verfügung gestellt.

Parameters:

message - Nachricht, die an die Service Bus-Warteschlange oder das Service Bus-Thema gesendet werden soll.
scheduledEnqueueTime - Datetime, an der 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 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. 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 oder das Service Bus-Thema gesendet werden soll.
scheduledEnqueueTime - Datetime, zu der 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 Iterable scheduleMessages(Iterable messages, OffsetDateTime scheduledEnqueueTime)

Sendet einen Batch geplanter 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 Warteschlange zur Verfügung gestellt.

Parameters:

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

Returns:

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

scheduleMessages

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

Sendet einen Batch geplanter 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 Warteschlange zur Verfügung gestellt.

Parameters:

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

Returns:

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

sendMessage

public void 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.

sendMessage

public void 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 Nachricht festgelegt werden soll.

sendMessages

public void sendMessages(ServiceBusMessageBatch batch)

Sendet einen Nachrichtenbatch an die Azure Service Bus Entität, mit der der 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.

sendMessages

public void sendMessages(ServiceBusMessageBatch batch, ServiceBusTransactionContext transactionContext)

Sendet einen Nachrichtenbatch an die Azure Service Bus Entität, mit der der 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 Nachricht festgelegt werden soll.

sendMessages

public void sendMessages(Iterable messages)

Sendet eine Gruppe von ServiceBusMessage an eine Service Bus-Warteschlange oder ein Service Bus-Thema mithilfe eines Batchansatzes. Wenn die Größe von 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.

sendMessages

public void sendMessages(Iterable messages, ServiceBusTransactionContext transactionContext)

Sendet eine Gruppe von ServiceBusMessage an eine Service Bus-Warteschlange oder ein Service Bus-Thema mithilfe eines Batchansatzes. Wenn die Größe von 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 Nachricht festgelegt werden soll.

Gilt für: