ServiceBusClientBuilder.ServiceBusProcessorClientBuilder Klasse
- java.
lang. Object - com.
azure. messaging. servicebus. ServiceBusClientBuilder. ServiceBusProcessorClientBuilder
- com.
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 |
---|---|
Service |
buildProcessorClient()
Erstellt einen Service Bus-Nachrichtenprozessor, der für das Lesen ServiceBusReceivedMessage aus einer bestimmten Warteschlange oder einem bestimmten Abonnement verantwortlich ist. |
Service |
disableAutoComplete()
Deaktiviert die automatische Vervollständigung und das automatische Abbrechen empfangener Nachrichten. |
Service |
maxAutoLockRenewDuration(Duration maxAutoLockRenewDuration)
Legt fest, wie lange die automatische Verlängerung der Sperre fortgesetzt werden soll. |
Service |
maxConcurrentCalls(int maxConcurrentCalls)
Max. gleichzeitige Nachrichten, die dieser Prozessor verarbeiten soll. |
Service |
prefetchCount(int prefetchCount)
Legt die Prefetchanzahl des Prozessors fest. |
Service |
processError(Consumer<ServiceBusErrorContext> processError)
Der Fehlerhandler für den Prozessor, der bei einem Fehler beim Empfangen von Meldungen aufgerufen wird. |
Service |
processMessage(Consumer<ServiceBusReceivedMessageContext> processMessage)
Der Rückruf für die Nachrichtenverarbeitung für den Prozessor, der ausgeführt wird, wenn eine Nachricht empfangen wird. |
Service |
queueName(String queueName)
Legt den Namen der Warteschlange fest, für die ein Prozessor erstellt werden soll. |
Service |
receiveMode(ServiceBusReceiveMode receiveMode)
Legt den Empfangsmodus für den Prozessor fest. |
Service |
subQueue(SubQueue subQueue)
Legt den Typ des fest, mit dem eine SubQueue Verbindung hergestellt werden soll. |
Service |
subscriptionName(String subscriptionName)
Legt den Namen des Abonnements im Thema fest, auf das lauscht werden soll. |
Service |
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:
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:
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:
null
gibt an, dass die automatische Verlängerung deaktiviert ist.
Returns:
maxConcurrentCalls
public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder maxConcurrentCalls(int maxConcurrentCalls)
Max. gleichzeitige Nachrichten, die dieser Prozessor verarbeiten soll. Standardmäßig ist dies auf 1 festgelegt.
Parameters:
Returns:
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:
Returns:
processError
public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder processError(Consumer
Der Fehlerhandler für den Prozessor, der bei einem Fehler beim Empfangen von Meldungen aufgerufen wird.
Parameters:
Returns:
processMessage
public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder processMessage(Consumer
Der Rückruf für die Nachrichtenverarbeitung für den Prozessor, der ausgeführt wird, wenn eine Nachricht empfangen wird.
Parameters:
Returns:
queueName
public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder queueName(String queueName)
Legt den Namen der Warteschlange fest, für die ein Prozessor erstellt werden soll.
Parameters:
Returns:
receiveMode
public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder receiveMode(ServiceBusReceiveMode receiveMode)
Legt den Empfangsmodus für den Prozessor fest.
Parameters:
Returns:
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:
Returns:
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:
Returns:
topicName
public ServiceBusClientBuilder.ServiceBusProcessorClientBuilder topicName(String topicName)
Legt den Namen des Themas fest. subscriptionName(String subscriptionName) muss ebenfalls festgelegt werden.
Parameters:
Returns:
Gilt für:
Azure SDK for Java