Azure Cosmos Test-Clientbibliothek für Java– Version 1.0.0-beta.6
Bibliothek mit Kernfehlerinjektionsklassen, die zum Testen von Azure Cosmos DB SDK-Bibliotheken verwendet werden.
Erste Schritte
Einschließen des Pakets
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-cosmos-test</artifactId>
<version>1.0.0-beta.6</version>
</dependency>
Voraussetzungen
- Java Development Kit (JDK) mit Version 8 oder höher
- Ein aktives Azure-Konto. Wenn Sie keines besitzen, können Sie sich für ein kostenloses Kontoregistrieren. Zu Entwicklungs- und Testzwecken können Sie alternativ den Azure Cosmos DB-Emulator verwenden. Da das HTTPS-Emulatorzertifikat selbstsigniert ist, müssen Sie das Zertifikat in den vertrauenswürdigen Java-Zertifikatspeicher importieren, wie hier erläutert.
- (Optional) SLF4J ist eine Protokollierungsfassade.
- (Optional) Die SLF4J-Bindung wird verwendet, um SLF4J ein bestimmtes Protokollierungsframework zuzuordnen.
- (Optional) Maven
SLF4J ist nur erforderlich, wenn Sie die Protokollierung verwenden möchten. Laden Sie außerdem eine SLF4J-Bindung herunter, um die SLF4J-API mit der Protokollierungsimplementierung Ihrer Wahl zu verknüpfen. Weitere Informationen finden Sie im SLF4J-Benutzerhandbuch.
Das SDK stellt Reactor Core-basierte asynchrone APIs bereit. Weitere Informationen zu Reaktorkern- und Flux/Mono-Typen finden Sie hier.
Wichtige Begriffe
Die Azure Cosmos-Testbibliothek kann verwendet werden, um Fehler in das Azure Cosmos SDK für Java einzufügen.
Beispiele
Der folgende Abschnitt enthält mehrere Codeausschnitte, die die Erstellung eines der häufigsten Fehlereinschleusungsszenarios behandeln, einschließlich:
- Szenario für hohe Kanalakquisition
- Verbindungsbruchszenario
- Szenario "Serverrückgabe nicht mehr vorhanden"
- Szenario zum schließen der zufälligen Verbindung
Szenario für hohe Kanalakquisition
FaultInjectionRule serverConnectionDelayRule =
new FaultInjectionRuleBuilder("<YOUR RULE ID>")
.condition(
new FaultInjectionConditionBuilder()
.operationType(FaultInjectionOperationType.CREATE_ITEM)
.build()
)
.result(
FaultInjectionResultBuilders
.getResultBuilder(FaultInjectionServerErrorType.CONNECTION_DELAY)
.delay(Duration.ofSeconds(6)) // default connection timeout is 5s
.times(1)
.build()
)
.duration(Duration.ofMinutes(5))
.build();
CosmosFaultInjectionHelper.configureFaultInjectionRules(container, Arrays.asList(serverConnectionDelayRule)).block();
Verbindungsbruchszenario
FaultInjectionRule timeoutRule =
new FaultInjectionRuleBuilder("<YOUR RULE ID>")
.condition(
new FaultInjectionConditionBuilder()
.operationType(FaultInjectionOperationType.READ_ITEM)
.build()
)
.result(
FaultInjectionResultBuilders
.getResultBuilder(FaultInjectionServerErrorType.RESPONSE_DELAY)
.times(1)
.delay(Duration.ofSeconds(6)) // the default time out is 5s
.build()
)
.duration(Duration.ofMinutes(5))
.build();
CosmosFaultInjectionHelper.configureFaultInjectionRules(container, Arrays.asList(timeoutRule)).block();
Szenario "Serverrückgabe nicht mehr vorhanden"
FaultInjectionRule serverErrorRule =
new FaultInjectionRuleBuilder("<YOUR RULE ID>")
.condition(
new FaultInjectionConditionBuilder()
.operationType(FaultInjectionOperationType.READ_ITEM)
.build()
)
.result(
FaultInjectionResultBuilders
.getResultBuilder(FaultInjectionServerErrorType.GONE)
.times(1)
.build()
)
.duration(Duration.ofMinutes(5))
.build();
CosmosFaultInjectionHelper.configureFaultInjectionRules(container, Arrays.asList(serverErrorRule)).block();
Szenario zum schließen der zufälligen Verbindung
FaultInjectionRule connectionErrorRule =
new FaultInjectionRuleBuilder("<YOUR RULE ID>")
.condition(
new FaultInjectionConditionBuilder()
.operationType(FaultInjectionOperationType.CREATE_ITEM)
.endpoints(new FaultInjectionEndpointBuilder(FeedRange.forLogicalPartition(new PartitionKey("<YOUR PARTITION KEY>"))).build())
.build()
)
.result(
FaultInjectionResultBuilders
.getResultBuilder(FaultInjectionConnectionErrorType.CONNECTION_CLOSE)
.interval(Duration.ofSeconds(1))
.threshold(1.0)
.build()
)
.duration(Duration.ofSeconds(2))
.build();
CosmosFaultInjectionHelper.configureFaultInjectionRules(container, Arrays.asList(connectionErrorRule)).block();
Problembehandlung
Allgemein
Azure Cosmos DB ist eine schnelle und flexible verteilte Datenbank mit nahtloser Skalierung, garantierter Latenz und garantiertem Durchsatz. Die Skalierung Ihrer Datenbank mit Azure Cosmos DB erfordert weder aufwendige Änderungen an der Architektur noch das Schreiben von komplexem Code. Zentrales Hoch- und Herunterskalieren ist ebenso problemlos möglich wie das Aufrufen einer einzelnen API oder SDK-Methode. Da der Zugriff auf Azure Cosmos DB jedoch über Netzwerkaufrufe erfolgt, können Sie bei der Verwendung des Azure Cosmos DB Java SDK v4 clientseitige Optimierungen vornehmen, um eine optimale Leistung zu erzielen.
Der Leistungsleitfaden behandelt diese clientseitigen Optimierungen.
Der Leitfaden zur Problembehandlung behandelt häufige Probleme, Problemumgehungen, Diagnoseschritte und Tools bei der Verwendung des Azure Cosmos DB Java SDK v4 mit Sql-API-Konten von Azure Cosmos DB.
Aktivieren der Clientprotokollierung
Nächste Schritte
Mitwirken
Beiträge und Vorschläge für dieses Projekt sind willkommen. Für die meisten Beiträge ist die Zustimmung zu einer Lizenzvereinbarung für Mitwirkende (Contributor License Agreement, CLA) erforderlich, in der Sie erklären, dass Sie dazu berechtigt sind, uns die Rechte für die Nutzung Ihres Beitrags zu erteilen, und dies auch tun.
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.
Azure SDK for Java