Freigeben über


ServiceBusClientBuilder.ServiceBusProcessorClientBuilder Klasse

  • java.lang.Object
    • com.azure.messaging.servicebus.ServiceBusClientBuilder.ServiceBusProcessorClientBuilder

public final class ServiceBusClientBuilder.ServiceBusProcessorClientBuilder

Generator für die Erstellung ServiceBusProcessorClient , um Nachrichten von einer Service Bus-Entität zu nutzen. ServiceBusProcessorClient stellt einen pushbasierten Mechanismus bereit, der den Rückruf der Nachrichtenverarbeitung benachrichtigt, wenn eine Nachricht empfangen wird, oder das Fehlerhandle, wenn ein Fehler beobachtet wird. Um eine instance zu erstellen, müssen Sie daher die beiden Rückrufe konfigurieren – processMessage(Consumer<ServiceBusReceivedMessageContext> processMessage) und processError(Consumer<ServiceBusErrorContext> processError) sind erforderlich. Standardmäßig ist ein ServiceBusProcessorClient mit Den automatischen Vervollständigungs- und Automatischsperrungs-Erneuerungsfunktionen konfiguriert.

Beispielcode zum Instanziieren eines Prozessorclients und zum Empfangen im PeekLock-Modus

// Function that gets called whenever a message is received.
 Consumer<ServiceBusReceivedMessageContext> processMessage = context -> {
     final ServiceBusReceivedMessage message = context.getMessage();
     // Randomly complete or abandon each message. Ideally, in real-world scenarios, if the business logic
     // handling message reaches desired state such that it doesn't require Service Bus to redeliver
     // the same message, then context.complete() should be called otherwise context.abandon().
     final boolean success = Math.random() < 0.5;
     if (success) {
         try {
             context.complete();
         } catch (RuntimeException error) {
             System.out.printf("Completion of the message %s failed.%n Error: %s%n",
                 message.getMessageId(), error);
         }
     } else {
         try {
             context.abandon();
         } catch (RuntimeException error) {
             System.out.printf("Abandoning of the message %s failed.%nError: %s%n",
                 message.getMessageId(), error);
         }
     }
 };

 // Sample code that gets called if there's an error
 Consumer<ServiceBusErrorContext> processError = errorContext -> {
     if (errorContext.getException() instanceof ServiceBusException) {
         ServiceBusException exception = (ServiceBusException) errorContext.getException();

         System.out.printf("Error source: %s, reason %s%n", errorContext.getErrorSource(),
             exception.getReason());
     } else {
         System.out.printf("Error occurred: %s%n", errorContext.getException());
     }
 };

 TokenCredential tokenCredential = new DefaultAzureCredentialBuilder().build();

 // Create the processor client via the builder and its sub-builder
 // 'fullyQualifiedNamespace' will look similar to "{your-namespace}.servicebus.windows.net"
 ServiceBusProcessorClient processorClient = new ServiceBusClientBuilder()
     .credential(fullyQualifiedNamespace, tokenCredential)
     .processor()
     .queueName(queueName)
     .receiveMode(ServiceBusReceiveMode.PEEK_LOCK)
     .disableAutoComplete()  // Make sure to explicitly opt in to manual settlement (e.g. complete, abandon).
     .processMessage(processMessage)
     .processError(processError)
     .disableAutoComplete()
     .buildProcessorClient();

 // Starts the processor in the background. Control returns immediately.
 processorClient.start();

 // Stop processor and dispose when done processing messages.
 processorClient.stop();
 processorClient.close();

Beispielcode zum Instanziieren eines Prozessorclients und zum Empfangen im ReceiveAndDelete-Modus

// Function that gets called whenever a message is received.
 Consumer<ServiceBusReceivedMessageContext> processMessage = context -> {
     final ServiceBusReceivedMessage message = context.getMessage();
     System.out.printf("Processing message. Session: %s, Sequence #: %s. Contents: %s%n",
         message.getSessionId(), message.getSequenceNumber(), message.getBody());
 };

 // Sample code that gets called if there's an error
 Consumer<ServiceBusErrorContext> processError = errorContext -> {
     if (errorContext.getException() instanceof ServiceBusException) {
         ServiceBusException exception = (ServiceBusException) errorContext.getException();

         System.out.printf("Error source: %s, reason %s%n", errorContext.getErrorSource(),
             exception.getReason());
     } else {
         System.out.printf("Error occurred: %s%n", errorContext.getException());
     }
 };

 TokenCredential tokenCredential = new DefaultAzureCredentialBuilder().build();

 // Create the processor client via the builder and its sub-builder
 // 'fullyQualifiedNamespace' will look similar to "{your-namespace}.servicebus.windows.net"
 // 'disableAutoComplete()' will opt in to manual settlement (e.g. complete, abandon).
 ServiceBusProcessorClient processorClient = new ServiceBusClientBuilder()
     .credential(fullyQualifiedNamespace, tokenCredential)
     .processor()
     .queueName(queueName)
     .receiveMode(ServiceBusReceiveMode.RECEIVE_AND_DELETE)
     .processMessage(processMessage)
     .processError(processError)
     .disableAutoComplete()
     .buildProcessorClient();

 // Starts the processor in the background. Control returns immediately.
 processorClient.start();

 // Stop processor and dispose when done processing messages.
 processorClient.stop();
 processorClient.close();

Methodenzusammenfassung

Modifizierer und Typ Methode und Beschreibung
ServiceBusProcessorClient buildProcessorClient()

Erstellt einen Service Bus-Nachrichtenprozessor, der für das Lesen ServiceBusReceivedMessage aus einer bestimmten Warteschlange oder einem bestimmten Abonnement verantwortlich ist.

ServiceBusProcessorClientBuilder disableAutoComplete()

Deaktiviert die automatische Vervollständigung und das automatische Abbrechen empfangener Nachrichten.

ServiceBusProcessorClientBuilder maxAutoLockRenewDuration(Duration maxAutoLockRenewDuration)

Legt fest, wie lange die automatische Verlängerung der Sperre fortgesetzt werden soll.

ServiceBusProcessorClientBuilder maxConcurrentCalls(int maxConcurrentCalls)

Max. gleichzeitige Nachrichten, die dieser Prozessor verarbeiten soll.

ServiceBusProcessorClientBuilder prefetchCount(int prefetchCount)

Legt die Prefetchanzahl des Prozessors fest.

ServiceBusProcessorClientBuilder processError(Consumer<ServiceBusErrorContext> processError)

Der Fehlerhandler für den Prozessor, der bei einem Fehler beim Empfangen von Meldungen aufgerufen wird.

ServiceBusProcessorClientBuilder processMessage(Consumer<ServiceBusReceivedMessageContext> processMessage)

Der Rückruf für die Nachrichtenverarbeitung für den Prozessor, der ausgeführt wird, wenn eine Nachricht empfangen wird.

ServiceBusProcessorClientBuilder queueName(String queueName)

Legt den Namen der Warteschlange fest, für die ein Prozessor erstellt werden soll.

ServiceBusProcessorClientBuilder receiveMode(ServiceBusReceiveMode receiveMode)

Legt den Empfangsmodus für den Prozessor fest.

ServiceBusProcessorClientBuilder subQueue(SubQueue subQueue)

Legt den Typ des fest, mit dem eine SubQueue Verbindung hergestellt werden soll.

ServiceBusProcessorClientBuilder subscriptionName(String subscriptionName)

Legt den Namen des Abonnements im Thema fest, auf das lauscht werden soll.

ServiceBusProcessorClientBuilder topicName(String topicName)

Legt den Namen des Themas fest.

Geerbte Methoden von java.lang.Object

Details zur Methode

buildProcessorClient

public ServiceBusProcessorClient buildProcessorClient()

Erstellt einen Service Bus-Nachrichtenprozessor, der für das Lesen ServiceBusReceivedMessage aus einer bestimmten Warteschlange oder einem bestimmten Abonnement verantwortlich ist.

Returns:

Eine neue ServiceBusProcessorClient , die Nachrichten aus einer Warteschlange oder einem Abonnement verarbeitet.

disableAutoComplete

public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder disableAutoComplete()

Deaktiviert die automatische Vervollständigung und das automatische Abbrechen empfangener Nachrichten. Standardmäßig ist complete()eine erfolgreich verarbeitete Nachricht . Wenn bei der Verarbeitung der Nachricht ein Fehler auftritt, ist dies abandon().

Returns:

Das geänderte ServiceBusProcessorClientBuilder-Objekt.

maxAutoLockRenewDuration

public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder maxAutoLockRenewDuration(Duration maxAutoLockRenewDuration)

Legt fest, wie lange die automatische Verlängerung der Sperre fortgesetzt werden soll. Die automatische Verlängerung wird festgelegt Duration#ZERO oder null deaktiviert. Für RECEIVE_AND_DELETE den Modus ist die automatische Verlängerung deaktiviert.

Parameters:

maxAutoLockRenewDuration - die Zeitspanne, in der die automatische Verlängerung der Sperre fortgesetzt wird. Duration#ZERO oder null gibt an, dass die automatische Verlängerung deaktiviert ist.

Returns:

Das aktualisierte ServiceBusProcessorClientBuilder Objekt.

maxConcurrentCalls

public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder maxConcurrentCalls(int maxConcurrentCalls)

Max. gleichzeitige Nachrichten, die dieser Prozessor verarbeiten soll. Standardmäßig ist dies auf 1 festgelegt.

Parameters:

maxConcurrentCalls - max. gleichzeitige Nachrichten, die dieser Prozessor verarbeiten soll.

Returns:

Das aktualisierte ServiceBusProcessorClientBuilder Objekt.

prefetchCount

public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder prefetchCount(int prefetchCount)

Legt die Prefetchanzahl des Prozessors fest. Sowohl für den Modus als auch PEEK_LOCKRECEIVE_AND_DELETE für den Modus ist der Standardwert 0. Prefetch beschleunigt den Nachrichtenfluss, indem eine Nachricht für den lokalen Abruf verfügbar ist, wenn und bevor die Anwendung den Prozessor startet. Wenn Sie einen Wert ungleich 0 festlegen, wird diese Anzahl von Nachrichten vorab abgerufen. Wenn Sie den Wert auf 0 festlegen, wird das Prefetch deaktiviert.

Parameters:

prefetchCount - Die Anzahl der Prefetchs.

Returns:

Das geänderte ServiceBusProcessorClientBuilder-Objekt.

processError

public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder processError(Consumer processError)

Der Fehlerhandler für den Prozessor, der bei einem Fehler beim Empfangen von Meldungen aufgerufen wird.

Parameters:

processError - Der Fehlerhandler, der ausgeführt wird, wenn ein Fehler auftritt.

Returns:

Das aktualisierte ServiceBusProcessorClientBuilder Objekt

processMessage

public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder processMessage(Consumer processMessage)

Der Rückruf für die Nachrichtenverarbeitung für den Prozessor, der ausgeführt wird, wenn eine Nachricht empfangen wird.

Parameters:

processMessage - Der Nachrichtenverarbeitungs-Consumer, der ausgeführt wird, wenn eine Nachricht empfangen wird.

Returns:

Das aktualisierte ServiceBusProcessorClientBuilder Objekt.

queueName

public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder queueName(String queueName)

Legt den Namen der Warteschlange fest, für die ein Prozessor erstellt werden soll.

Parameters:

queueName - Name der Warteschlange.

Returns:

Das geänderte ServiceBusProcessorClientBuilder-Objekt.

receiveMode

public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder receiveMode(ServiceBusReceiveMode receiveMode)

Legt den Empfangsmodus für den Prozessor fest.

Parameters:

receiveMode - Modus für den Empfang von Nachrichten.

Returns:

Das geänderte ServiceBusProcessorClientBuilder-Objekt.

subQueue

public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder subQueue(SubQueue subQueue)

Legt den Typ des fest, mit dem eine SubQueue Verbindung hergestellt werden soll. Azure Service Bus Warteschlangen und Abonnements stellen eine sekundäre Unterwarteschlange bereit, die als Dead-Letter-Warteschlange (DLQ) bezeichnet wird.

Parameters:

subQueue - Der Typ der Unterwarteschlange.

Returns:

Das geänderte ServiceBusProcessorClientBuilder-Objekt.

subscriptionName

public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder subscriptionName(String subscriptionName)

Legt den Namen des Abonnements im Thema fest, auf das lauscht werden soll. topicName(String topicName) muss ebenfalls festgelegt werden.

Parameters:

subscriptionName - Name des Abonnements.

Returns:

Das geänderte ServiceBusProcessorClientBuilder-Objekt.

topicName

public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder topicName(String topicName)

Legt den Namen des Themas fest. subscriptionName(String subscriptionName) muss ebenfalls festgelegt werden.

Parameters:

topicName - Name des Themas.

Returns:

Das geänderte ServiceBusProcessorClientBuilder-Objekt.

Gilt für: