Bibliothèque cliente de test Azure Cosmos pour Java - version 1.0.0-beta.6
Bibliothèque contenant les classes d’injection d’erreurs principales utilisées pour tester les bibliothèques du Kit de développement logiciel (SDK) Azure Cosmos DB.
Prise en main
Inclure le package
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-cosmos-test</artifactId>
<version>1.0.0-beta.6</version>
</dependency>
Prérequis
- Kit de développement Java (JDK) avec la version 8 ou ultérieure
- Un compte Azure actif. Si vous n’en avez pas, vous pouvez vous inscrire pour bénéficier d’un compte gratuit. Vous pouvez également utiliser l’émulateur Azure Cosmos DB à des fins de développement et de test. Comme le certificat HTTPS de l’émulateur est auto-signé, vous devez importer son certificat dans le magasin de certificats approuvé Java, comme expliqué ici
- (Facultatif) SLF4J est une façade de journalisation.
- (Facultatif) La liaison SLF4J est utilisée pour associer un framework de journalisation spécifique à SLF4J.
- (Facultatif) Maven
SLF4J n’est nécessaire que si vous envisagez d’utiliser la journalisation. Téléchargez également une liaison SLF4J qui lie l’API SLF4J à l’implémentation de journalisation de votre choix. Pour plus d’informations, consultez le manuel de l’utilisateur SLF4J.
Le Kit de développement logiciel (SDK) fournit des API asynchrones basées sur Reactor Core. Vous pouvez en savoir plus sur les types Core et Flux/Mono de réacteur ici
Concepts clés
La bibliothèque de test Azure Cosmos peut être utilisée pour injecter des échecs dans le Kit de développement logiciel (SDK) Azure Cosmos pour Java.
Exemples
La section suivante fournit plusieurs extraits de code expliquant comment créer certains des scénarios d’injection d’échec les plus courants, notamment :
- Scénario d’acquisition de canal élevé
- Scénario de connexion interrompue
- Scénario de retour de serveur supprimé
- Scénario de fermeture de connexion aléatoire
Scénario d’acquisition de canal élevé
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();
Scénario de connexion interrompue
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();
Scénario de retour de serveur supprimé
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();
Scénario de fermeture de connexion aléatoire
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();
Dépannage
Général
Azure Cosmos DB est une base de données distribuée rapide et flexible qui peut être mise à l’échelle en toute transparence avec une latence et un débit garantis. Vous n’avez pas à apporter de modifications d’architecture majeures ou écrire de code complexe pour mettre à l’échelle votre base de données avec Azure Cosmos DB. La réduction et l’augmentation de l’échelle est aussi simple que le passage d’un appel d’API ou de Kit de développement logiciel (SDK). Toutefois, étant donné qu’Azure Cosmos DB est accessible au moyen d’appels réseau, vous pouvez apporter des optimisations côté client de manière à atteindre des performances de pointe quand vous utilisez le SDK Java v4 Azure Cosmos DB.
Le Guide des performances couvre ces optimisations côté client.
Le Guide de résolution des problèmes décrit les problèmes courants, les solutions de contournement, les étapes de diagnostic et les outils lorsque vous utilisez le Kit de développement logiciel (SDK) Java Azure Cosmos DB v4 avec des comptes d’API SQL Azure Cosmos DB.
Activer la journalisation du client
Étapes suivantes
Contribution
Ce projet accepte les contributions et les suggestions. La plupart des contributions vous demandent d’accepter un contrat de licence de contribution (CLA) spécifiant que vous avez le droit de nous accorder les droits d’utiliser votre contribution, et que vous nous les accordez.
Quand vous envoyez une demande de tirage (pull request), un bot CLA détermine automatiquement si vous devez fournir un contrat CLA et agrémenter la demande de tirage de façon appropriée (par exemple, avec une étiquette ou un commentaire). Suivez simplement les instructions fournies par le bot. Vous ne devez effectuer cette opération qu’une seule fois sur tous les dépôts utilisant notre contrat CLA.
Ce projet a adopté le Code de conduite Open Source de Microsoft. Pour plus d’informations, consultez les Questions fréquentes (FAQ) sur le code de conduite ou envoyez vos questions ou vos commentaires à opencode@microsoft.com.
Azure SDK for Java