Tous les produits
Search
Centre de documentation

Enterprise Distributed Application Service:Contexte d'appel

Dernière mise à jour :Aug 11, 2026

Le contexte d'appel comprend les propriétés d'appel et les données personnalisées transmises, à l'exclusion des paramètres spécifiques à l'interface. Les propriétés d'appel incluent l'adresse IP, le nom de l'application qui initie l'appel et le délai d'expiration.

Spécifier et récupérer le contexte d'appel en cours

La classe com.taobao.hsf.util.RequestCtxUtil fournit une méthode statique pour spécifier et récupérer le contexte d'appel. Basée sur ThreadLocal, la méthode getxxx supprime la propriété xxx de la variable ThreadLocal. Cette méthode n'est effective que pour un seul appel du thread actuel.

Le tableau suivant décrit les méthodes utilisées pour spécifier et récupérer des propriétés spécifiques.

  • Consommateurs

    Méthode Description
    setRequestTimeout() Spécifie le délai d'expiration pour un seul appel.
    setUserId() Spécifie l'ID utilisateur du service d'unité dans l'appel actuel. Cette méthode est requise pour les appels génériques.
    getProviderIp() Récupère l'adresse IP du dernier fournisseur appelé.
    setTargetServerIp(String ip) Spécifie l'adresse IP du fournisseur requis lors du prochain appel du thread actuel. Cette adresse IP doit figurer dans la liste des adresses IP des services fournis en mémoire.
    setDirectTargetServerIp(String targetIp) Spécifie l'adresse IP du fournisseur lors du prochain appel du thread actuel. Cette méthode contourne le registre et ignore la liste des adresses IP en mémoire.
  • Fournisseurs

    Méthode Description
    getClientIp() Récupère l'adresse IP de l'appelant.
    getAppNameOfClient() Récupère le nom de l'application utilisée par l'appelant.
    isHttpRequest() Indique si l'appel est un appel HTTP.
    getHttpHeader(String key) Récupère la propriété d'en-tête de la requête HTTP.

Transmettre le contexte de requête personnalisé

RpcContext fournit une méthode pour transmettre des données supplémentaires au fournisseur sans modifier l'interface. Le type de paramètre peut être un objet de domaine personnalisé (DO) ou un type primitif. Assurez-vous que l'extrémité distante peut sérialiser les paramètres du même type.

  • Spécifiez le contexte avant que le consommateur n'initie un appel.

    //setup context before rpc call
    RPCContext rpcContext = RPCContext.getClientContext();
    rpcContext.putAttachment("tetantId", "123");
    
    //This is an RPC call. The call context is also transmitted to the peer end.
     orderService.queryOrder(1L);
  • Récupérez le contexte en utilisant les méthodes du fournisseur.

    //get context data
    RPCContext rpcContext = RPCContext.getServerContext();
    String myContext = (String)rpcContext.getAttachment("tetantId");