RequestOptions.SessionToken Propriété
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Obtient ou définit le jeton à utiliser avec la cohérence de session dans le service Azure Cosmos DB.
public string SessionToken { get; set; }
member this.SessionToken : string with get, set
Public Property SessionToken As String
Valeur de propriété
Jeton à utiliser avec la cohérence de session.
Exemples
Cet exemple montre comment récupérer sessionToken à partir d’unResourceResponse<TResource>, puis l’utiliser sur un autre instance de DocumentClient dans RequestOptions Cet exemple suppose que chaque instance du client s’exécute à partir du code d’un appDomain différent, par exemple sur des nœuds différents dans le cas d’une application web à plusieurs nœuds
string sessionToken;
string docSelfLink;
using (DocumentClient client = new DocumentClient(new Uri(""), ""))
{
ResourceResponse<Document> response = client.CreateDocumentAsync(collection.SelfLink, new { id = "an id", value = "some value" }).Result;
sessionToken = response.SessionToken;
Document created = response.Resource;
docSelfLink = created.SelfLink;
}
using (DocumentClient client = new DocumentClient(new Uri(""), ""))
{
ResourceResponse<Document> read = client.ReadDocumentAsync(docSelfLink, new RequestOptions { SessionToken = sessionToken }).Result;
}
Remarques
L’un des ConsistencyLevel pour Azure Cosmos DB est Session. En fait, il s’agit du niveau deault appliqué aux comptes.
Lors de l’utilisation de la cohérence de session, chaque nouvelle demande d’écriture à Azure Cosmos DB est attribuée à une nouvelle SessionToken. DocumentClient utilise ce jeton en interne avec chaque demande de lecture/requête pour garantir que le niveau de cohérence défini est maintenu.
Dans certains scénarios, vous devez gérer cette session vous-même ; Prenons l’exemple d’une application web avec plusieurs nœuds, chaque nœud aura ses propres instance de DocumentClient Si vous souhaitez que ces nœuds participent à la même session (pour pouvoir lire vos propres écritures de manière cohérente entre les niveaux web), vous devez envoyer sessionToken de ResourceResponse<TResource> l’action d’écriture sur un nœud au niveau client, à l’aide d’un cookie ou d’un autre mécanisme, et que ce jeton revient à la couche Web pour les lectures suivantes. Si vous utilisez un équilibreur de charge de tourniquet (round robin) qui ne conserve pas l’affinité de session entre les requêtes, tel qu’Azure Load Balancer, la lecture peut s’effectuer sur un nœud différent de la requête d’écriture, où la session a été créée.
Si vous ne transmettez pas le SessionToken Azure Cosmos DB dans le cadre de la description ci-dessus, vous risquez de vous retrouver avec des résultats de lecture incohérents pendant une période donnée.
S’applique à
Voir aussi
Azure SDK for .NET