Azure Storage Queue-Clientbibliothek für Java – Version 12.19.1
Die Warteschlangenspeicherung in Azure ist ein Dienst zur Speicherung großer Anzahlen von Nachrichten, auf die von überall auf der Welt mit authentifizierten Anrufen über HTTP oder HTTPS zugegriffen werden kann. Eine einzelne Warteschlangennachricht kann bis zu 64 KB groß sein, und eine Warteschlange kann Millionen von Nachrichten enthalten. Deren Anzahl ist nur durch die Kapazität des Speicherkontos begrenzt.
Quellcode | API-Referenzdokumentation | Produktdokumentation | Beispiele
Erste Schritte
Voraussetzungen
- Java Development Kit (JDK) mit Version 8 oder höher
- Azure-Abonnement
- Speicherkonto erstellen
Einschließen des Pakets
BOM-Datei einfügen
Fügen Sie das azure-sdk-bom in Ihr Projekt ein, um die Abhängigkeit von der GA-Version der Bibliothek zu übernehmen. Ersetzen Sie im folgenden Codeausschnitt den Platzhalter {bom_version_to_target} durch die Versionsnummer. Weitere Informationen zur Stückliste finden Sie in der AZURE SDK-BOM-INFODATEI.
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-sdk-bom</artifactId>
<version>{bom_version_to_target}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
und fügen Sie dann die direkte Abhängigkeit ohne Versions-Tag in den Abschnitt „Abhängigkeit“ ein.
<dependencies>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-storage-queue</artifactId>
</dependency>
</dependencies>
Direkte Abhängigkeiten einfügen
Wenn Sie abhängigkeiten von einer bestimmten Version der Bibliothek übernehmen möchten, die in der Stückliste nicht vorhanden ist, fügen Sie die direkte Abhängigkeit wie folgt zu Ihrem Projekt hinzu.
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-storage-queue</artifactId>
<version>12.19.1</version>
</dependency>
Erstellen eines Speicherkontos
Zum Erstellen eines Speicherkontos können Sie das Azure-Portal oder die Azure CLI verwenden.
az storage account create \
--resource-group <resource-group-name> \
--name <storage-account-name> \
--location <location>
Authentifizieren des Clients
Um mit dem Speicherdienst (Blob, Queue, Message, MessageId, File) zu interagieren, müssen Sie eine instance der Service Client-Klasse erstellen. Um dies zu ermöglichen, benötigen Sie die Konto-SAS-Zeichenfolge (Shared Access Signature) des Speicherkontos. Weitere Informationen finden Sie unter SAS-Token.
Anmeldeinformationen abrufen
- SAS-Token
a. Verwenden Sie den folgenden Azure CLI-Codeausschnitt , um das SAS-Token aus dem Speicherkonto abzurufen.
az storage queue generate-sas
--name {queue name}
--expiry {date/time to expire SAS token}
--permission {permission to grant}
--connection-string {connection string of the storage account}
CONNECTION_STRING=<connection-string>
az storage queue generate-sas
--name javasdksas
--expiry 2019-06-05
--permission rpau
--connection-string $CONNECTION_STRING
b. Alternativ können Sie das KONTO-SAS-Token aus dem Azure-Portal abrufen.
Go to your storage account -> Shared access signature -> Click on Generate SAS and connection string (after setup)
- Anmeldeinformationen für freigegebene Schlüssel
a. Verwenden Sie den Kontonamen und den Kontoschlüssel. Kontoname ist Der Name Ihres Speicherkontos.
// Here is where we get the key
Go to your storage account -> Access keys -> Key 1/ Key 2 -> Key
b. Verwenden des Verbindungszeichenfolge
// Here is where we get the key
Go to your storage account -> Access Keys -> Keys 1/ Key 2 -> Connection string
Wichtige Begriffe
URL-Format
Warteschlangen können mit dem folgenden URL-Format adressiert werden: Die folgende URL adressiert eine Warteschlange im Diagramm: https://myaccount.queue.core.windows.net/images-to-download
Syntax von Ressourcen-URIs
Für das Speicherkonto schließt der Basis-URI für Warteschlangenvorgänge nur den Namen des Kontos ein:
https://myaccount.queue.core.windows.net
Bei einer Warteschlange enthält der Basis-URI den Namen des Kontos und den Namen der Warteschlange:
https://myaccount.queue.core.windows.net/myqueue
Behandeln von Ausnahmen
Verwendet den abschnitt, der queueServiceClient
unten aus dem Warteschlangendienstclient generiert wurde.
String queueServiceURL = String.format("https://%s.queue.core.windows.net", ACCOUNT_NAME);
QueueServiceClient queueServiceClient = new QueueServiceClientBuilder().endpoint(queueServiceURL)
.sasToken(SAS_TOKEN).buildClient();
try {
queueServiceClient.createQueue("myQueue");
} catch (QueueStorageException e) {
logger.error("Failed to create a queue with error code: " + e.getErrorCode());
}
Warteschlangennamen
Jede Warteschlange innerhalb eines Kontos muss einen eindeutigen Namen haben. Der Warteschlangenname muss ein gültiger DNS-Name sein und kann nach der Erstellung nicht mehr geändert werden. Warteschlangennamen müssen die folgenden Regeln erfüllen:
- Ein Warteschlangenname muss mit einem Buchstaben oder einer Ziffer beginnen und darf nur Buchstaben, Ziffern und Bindestriche (-) enthalten.
- Der erste und der letzte Buchstabe im Warteschlangennamen müssen alphanumerisch sein. Der Bindestrich (-) darf nicht als erstes oder letztes Zeichen verwendet werden. Direkt aufeinander folgende Bindestriche sind im Warteschlangennamen nicht zulässig.
- Alle Buchstaben in einem Warteschlangennamen müssen Kleinbuchstaben sein.
- Ein Warteschlangenname muss zwischen 3 und 63 Zeichen lang sein.
Warteschlangendienste
Der Warteschlangendienst führen Vorgänge für die Warteschlangen im Speicherkonto aus und verwaltet die Warteschlangeneigenschaften.
Warteschlangendienstclient
Der Client führt die Interaktionen mit dem Warteschlangendienst aus, erstellt oder löscht eine Warteschlange, ruft Warteschlangeneigenschaften ab und legt sie fest, listet Warteschlangen im Konto auf und ruft Warteschlangenstatistiken ab. Im SDK ist ein asynchroner QueueServiceAsyncClient
, und synchroner Client vorhanden, QueueClient
der die Auswahl eines Clients basierend auf dem Anwendungsfall einer Anwendung ermöglicht.
Sobald Sie über den Wert von SASToken verfügen, können Sie den Warteschlangendienstclient mit ${accountName}
erstellen ${SASToken}
.
String queueServiceURL = String.format("https://%s.queue.core.windows.net", ACCOUNT_NAME);
QueueServiceClient queueServiceClient = new QueueServiceClientBuilder().endpoint(queueServiceURL)
.sasToken(SAS_TOKEN).buildClient();
QueueClient newQueueClient = queueServiceClient.createQueue("myQueue");
oder
String queueServiceAsyncURL = String.format("https://%s.queue.core.windows.net/", ACCOUNT_NAME);
QueueServiceAsyncClient queueServiceAsyncClient = new QueueServiceClientBuilder().endpoint(queueServiceAsyncURL)
.sasToken(SAS_TOKEN).buildAsyncClient();
queueServiceAsyncClient.createQueue("newAsyncQueue").subscribe(result -> {
// do something when new queue created
}, error -> {
// do something if something wrong happened
}, () -> {
// completed, do something
});
Warteschlange
Die Warteschlangenspeicherung in Azure ist ein Dienst zur Speicherung großer Anzahlen von Nachrichten, auf die von überall auf der Welt mit authentifizierten Anrufen über HTTP oder HTTPS zugegriffen werden kann. Eine einzelne Warteschlangennachricht kann bis zu 64 KB groß sein, und eine Warteschlange kann Millionen von Nachrichten enthalten. Deren Anzahl ist nur durch die Kapazität des Speicherkontos begrenzt.
QueueClient
Sobald Sie über den Wert von SASToken verfügen, können Sie den Warteschlangendienstclient mit ${accountName}
, ${queueName}
${SASToken}
erstellen.
String queueURL = String.format("https://%s.queue.core.windows.net/%s", ACCOUNT_NAME, queueName);
QueueClient queueClient = new QueueClientBuilder().endpoint(queueURL).sasToken(SAS_TOKEN).buildClient();
// metadata is map of key-value pair
queueClient.createWithResponse(metadata, Duration.ofSeconds(30), Context.NONE);
oder
// Only one "?" is needed here. If the sastoken starts with "?", please removing one "?".
String queueAsyncURL = String.format("https://%s.queue.core.windows.net/%s?%s", ACCOUNT_NAME, queueAsyncName,
SAS_TOKEN);
QueueAsyncClient queueAsyncClient = new QueueClientBuilder().endpoint(queueAsyncURL).buildAsyncClient();
queueAsyncClient.createWithResponse(metadata).subscribe(result -> {
// do something when new queue created
}, error -> {
// do something if something wrong happened
}, () -> {
// completed, do something
});
Beispiele
Die folgenden Abschnitte enthalten mehrere Codeausschnitte, die einige der gängigsten Configuration Service-Aufgaben behandeln, einschließlich:
- Erstellen eines Clients
- Erstellen einer Warteschlange
- Löschen einer Warteschlange
- Auflisten der Warteschlangen im Konto
- Abrufen von Eigenschaften im Warteschlangenkonto
- Festlegen von Eigenschaften im Warteschlangenkonto
- Abrufen von Warteschlangenstatistiken
- Nachricht in eine Warteschlange einquenen
- Aktualisieren einer Nachricht in einer Warteschlange
- Einsehen von Nachrichten in einer Warteschlange
- Empfangen von Nachrichten aus einer Warteschlange
- Löschen einer Nachricht aus einer Warteschlange
- Abrufen einer Warteschlangeneigenschaften
- Festlegen/Aktualisieren einer Warteschlangenmetadaten
Erstellen eines Clients
Wir haben zwei Möglichkeiten, QueueService oder Warteschlangenclient zu erstellen. Hier wird queueServiceClient als Beispiel angegeben. Gleiches gilt für queueClient.
Erstellen Sie zunächst den Client aus der vollständigen URL/dem Endpunkt (z. B. mit queueName, mit SASToken usw.).
// Only one "?" is needed here. If the sastoken starts with "?", please removing one "?".
String queueServiceURL = String.format("https://%s.queue.core.windows.net/?%s", ACCOUNT_NAME, SAS_TOKEN);
QueueServiceClient queueServiceClient = new QueueServiceClientBuilder().endpoint(queueServiceURL).buildClient();
oder
Wir können den queueServiceClient aus dem Generator mit ${SASToken}
als Anmeldeinformationen erstellen.
String queueServiceURL = String.format("https://%s.queue.core.windows.net", ACCOUNT_NAME);
QueueServiceClient queueServiceClient = new QueueServiceClientBuilder().endpoint(queueServiceURL)
.sasToken(SAS_TOKEN).buildClient();
Erstellen einer Warteschlange
Erstellen Sie eine Warteschlange im Speicherkonto mit ${SASToken}
als Anmeldeinformationen.
Löst StorageException aus, wenn die Warteschlange nicht erstellt werden kann.
String queueServiceURL = String.format("https://%s.queue.core.windows.net", ACCOUNT_NAME);
QueueServiceClient queueServiceClient = new QueueServiceClientBuilder().endpoint(queueServiceURL)
.sasToken(SAS_TOKEN).buildClient();
QueueClient newQueueClient = queueServiceClient.createQueue("myQueue");
Löschen einer Warteschlange
Löschen Sie eine Warteschlange im Speicherkonto mit ${SASToken}
als Anmeldeinformationen.
Löst StorageException aus, wenn die Warteschlange nicht gelöscht werden kann.
String queueServiceURL = String.format("https://%s.queue.core.windows.net", ACCOUNT_NAME);
QueueServiceClient queueServiceClient = new QueueServiceClientBuilder().endpoint(queueServiceURL)
.sasToken(SAS_TOKEN).buildClient();
queueServiceClient.deleteQueue("myqueue");
Auflisten von Warteschlangen im Konto
Listet alle Warteschlangen im Konto mit ${SASToken}
als Anmeldeinformationen auf.
String queueServiceURL = String.format("https://%s.queue.core.windows.net", ACCOUNT_NAME);
QueueServiceClient queueServiceClient = new QueueServiceClientBuilder().endpoint(queueServiceURL)
.sasToken(SAS_TOKEN).buildClient();
// @param marker: Starting point to list the queues
// @param options: Filter for queue selection
// @param timeout: An optional timeout applied to the operation.
// @param context: Additional context that is passed through the Http pipeline during the service call.
queueServiceClient.listQueues(options, timeout, context).stream().forEach(queueItem ->
System.out.printf("Queue %s exists in the account.", queueItem.getName()));
Abrufen von Eigenschaften im Warteschlangenkonto
Ruft Warteschlangeneigenschaften im Konto ab, einschließlich Eigenschaften für Storage Analytics- und CORS-Regeln (Cross-Origin Resource Sharing).
Verwenden Sie ${SASToken}
als Anmeldeinformationen.
String queueServiceURL = String.format("https://%s.queue.core.windows.net", ACCOUNT_NAME);
QueueServiceClient queueServiceClient = new QueueServiceClientBuilder().endpoint(queueServiceURL)
.sasToken(SAS_TOKEN).buildClient();
QueueServiceProperties properties = queueServiceClient.getProperties();
Festlegen von Eigenschaften im Warteschlangenkonto
Legen Sie Warteschlangeneigenschaften im Konto fest, einschließlich Eigenschaften für Storage Analytics- und CORS-Regeln (Cross-Origin Resource Sharing).
Verwenden Sie ${SASToken}
als Anmeldeinformationen.
String queueServiceURL = String.format("https://%s.queue.core.windows.net", ACCOUNT_NAME);
QueueServiceClient queueServiceClient = new QueueServiceClientBuilder().endpoint(queueServiceURL)
.sasToken(SAS_TOKEN).buildClient();
QueueServiceProperties properties = queueServiceClient.getProperties();
properties.setCors(Collections.emptyList());
queueServiceClient.setProperties(properties);
Abrufen von Warteschlangendienststatistiken
Der Get Queue Service Stats
-Vorgang ruft Statistiken zur Replikation für den Warteschlangendienst ab.
Verwenden Sie ${SASToken}
als Anmeldeinformationen.
Er ist nur über den sekundären Standortendpunkt verfügbar, wenn die georedundante Replikation mit Lesezugriff für das Speicherkonto aktiviert ist.
String queueServiceURL = String.format("https://%s.queue.core.windows.net", ACCOUNT_NAME);
QueueServiceClient queueServiceClient = new QueueServiceClientBuilder().endpoint(queueServiceURL)
.sasToken(SAS_TOKEN).buildClient();
QueueServiceStatistics queueStats = queueServiceClient.getStatistics();
Nachricht in eine Warteschlange einreihen
Der Vorgang fügt eine neue Nachricht auf der Rückseite der Nachrichtenwarteschlange hinzu. Es kann auch ein Sichtbarkeitstimeout angegeben werden, um die Nachricht nicht sichtbar zu machen, bis das Sichtbarkeitstimeout abläuft.
Verwenden Sie ${SASToken}
als Anmeldeinformationen.
Nachrichten müssen ein Format aufweisen, das in eine XML-Anforderung mit UTF-8-Codierung eingeschlossen werden kann. Die Größe der codierten Nachricht kann für Version 2011-08-18 und höher bis zu 64 KB und für frühere Versionen bis zu 8 KB betragen.
String queueURL = String.format("https://%s.queue.core.windows.net", ACCOUNT_NAME);
QueueClient queueClient = new QueueClientBuilder().endpoint(queueURL).sasToken(SAS_TOKEN).queueName("myqueue")
.buildClient();
queueClient.sendMessage("myMessage");
Aktualisieren einer Nachricht in einer Warteschlange
Der Vorgang aktualisiert eine Nachricht in der Nachrichtenwarteschlange. Verwenden Sie ${SASToken}
als Anmeldeinformationen.
String queueURL = String.format("https://%s.queue.core.windows.net", ACCOUNT_NAME);
QueueClient queueClient = new QueueClientBuilder().endpoint(queueURL).sasToken(SAS_TOKEN).queueName("myqueue")
.buildClient();
// @param messageId: Id of the message
// @param popReceipt: Unique identifier that must match the message for it to be updated
// @param visibilityTimeout: How long the message will be invisible in the queue in seconds
queueClient.updateMessage(messageId, popReceipt, "new message", visibilityTimeout);
Einsehen von Nachrichten in einer Warteschlange
Der Vorgang sieht eine oder mehrere Nachrichten von der Vorderseite der Warteschlange ein. Verwenden Sie ${SASToken}
als Anmeldeinformationen.
String queueURL = String.format("https://%s.queue.core.windows.net", ACCOUNT_NAME);
QueueClient queueClient = new QueueClientBuilder().endpoint(queueURL).sasToken(SAS_TOKEN).queueName("myqueue")
.buildClient();
// @param key: The key with which the specified value should be associated.
// @param value: The value to be associated with the specified key.
queueClient.peekMessages(5, Duration.ofSeconds(1), new Context(key, value)).forEach(message ->
System.out.println(message.getBody().toString()));
Empfangen von Nachrichten aus einer Warteschlange
Der Vorgang ruft eine oder mehrere Nachrichten von der Vorderseite der Warteschlange ab. Verwenden Sie ${SASToken}
als Anmeldeinformationen.
String queueURL = String.format("https://%s.queue.core.windows.net", ACCOUNT_NAME);
QueueClient queueClient = new QueueClientBuilder().endpoint(queueURL).sasToken(SAS_TOKEN).queueName("myqueue")
.buildClient();
// Try to receive 10 messages: Maximum number of messages to get
queueClient.receiveMessages(10).forEach(message ->
System.out.println(message.getBody().toString()));
Löschen einer Nachricht aus einer Warteschlange
Der Vorgang löscht eine Nachricht aus der Warteschlange. Verwenden Sie ${SASToken}
als Anmeldeinformationen.
String queueURL = String.format("https://%s.queue.core.windows.net", ACCOUNT_NAME);
QueueClient queueClient = new QueueClientBuilder().endpoint(queueURL).sasToken(SAS_TOKEN).queueName("myqueue")
.buildClient();
queueClient.deleteMessage(messageId, popReceipt);
Abrufen von Warteschlangeneigenschaften
Der Vorgang ruft benutzerdefinierte Metadaten und Warteschlangeneigenschaften für die angegebene Warteschlange ab. Metadaten werden der Warteschlange als Name-Wert-Paare zugeordnet.
Verwenden Sie ${SASToken}
als Anmeldeinformationen.
String queueURL = String.format("https://%s.queue.core.windows.net", ACCOUNT_NAME);
QueueClient queueClient = new QueueClientBuilder().endpoint(queueURL).sasToken(SAS_TOKEN).queueName("myqueue")
.buildClient();
QueueProperties properties = queueClient.getProperties();
Festlegen von Warteschlangenmetadaten
Der Vorgang legt benutzerdefinierte Metadaten für die angegebene Warteschlange fest. Metadaten werden der Warteschlange als Name-Wert-Paare zugeordnet.
Verwenden Sie ${SASToken}
als Anmeldeinformationen.
String queueURL = String.format("https://%s.queue.core.windows.net", ACCOUNT_NAME);
QueueClient queueClient = new QueueClientBuilder().endpoint(queueURL).sasToken(SAS_TOKEN).queueName("myqueue")
.buildClient();
Map<String, String> metadata = new HashMap<>();
metadata.put("key1", "val1");
metadata.put("key2", "val2");
queueClient.setMetadata(metadata);
Problembehandlung
Allgemein
Wenn Sie mit der Warteschlange mithilfe dieser Java-Clientbibliothek interagieren, entsprechen vom Dienst zurückgegebene Fehler denselben HTTP-status Codes, die für REST-API-Anforderungen zurückgegeben werden. Wenn Sie beispielsweise versuchen, eine Warteschlange abzurufen, die in Ihrem Speicherkonto nicht vorhanden ist, wird ein 404
Fehler zurückgegeben, der angibt Not Found
.
HTTP-Standardclient
Alle Clientbibliotheken verwenden standardmäßig den Netty-HTTP-Client. Durch Hinzufügen der obigen Abhängigkeit wird die Clientbibliothek automatisch für die Verwendung des Netty-HTTP-Clients konfiguriert. Das Konfigurieren oder Ändern des HTTP-Clients wird detailliert im Wiki zu HTTP-Clients beschrieben.
SSL-Standardbibliothek
Alle Clientbibliotheken verwenden standardmäßig die Tomcat-native Boring-SSL-Bibliothek, um die Leistung auf nativer Ebene für SSL-Vorgänge zu ermöglichen. Die Boring-SSL-Bibliothek ist eine Uber-JAR-Datei mit nativen Bibliotheken für Linux/macOS/Windows und bietet im Vergleich zur SSL-Standardimplementierung im JDK eine bessere Leistung. Weitere Informationen, einschließlich zur Reduzierung der Abhängigkeitsgröße, finden Sie im Abschnitt Leistungsoptimierung des Wikis.
Nächste Schritte
Im GitHub-Repository des SDK stehen Ihnen mehrere Beispiele für das Java SDK zur Verfügung. Diese Beispiele enthalten Beispielcode für zusätzliche Szenarien, die häufig bei der Arbeit mit Key Vault auftreten:
Beispiele für nächste Schritte
Die Beispiele werden hier ausführlich erläutert.
Mitwirken
Beiträge und Vorschläge für dieses Projekt sind willkommen. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. Ausführliche Informationen finden Sie unter https://cla.microsoft.com.
Wenn Sie einen Pull Request (PR) übermitteln, überprüft ein CLA-Bot automatisch, ob Sie eine Lizenzvereinbarung bereitstellen und den PR entsprechend ergänzen müssen (z.B. mit einer Bezeichnung oder einem Kommentar). Führen Sie einfach die Anweisungen des Bots aus. Sie müssen dies nur einmal für alle Repositorys ausführen, die unsere CLA verwenden.
Für dieses Projekt gelten die Microsoft-Verhaltensregeln für Open Source (Microsoft Open Source Code of Conduct). Weitere Informationen finden Sie in den häufig gestellten Fragen zum Verhaltenskodex. Sie können sich auch an opencode@microsoft.com wenden, wenn Sie weitere Fragen oder Anmerkungen haben.
Ausführliche Informationen zum Mitwirken an diesem Repository finden Sie im Leitfaden zum Mitwirken.
- Verzweigen sie
- Erstellen Ihrer Featurebranch (
git checkout -b my-new-feature
) - Committen Ihrer Änderungen (
git commit -am 'Add some feature'
) - Pushen in den Branch (
git push origin my-new-feature
) - Erstellen eines neuen Pull Requests