Tüm Ürünler
Search
Belge Merkezi

Enterprise Distributed Application Service:Çağrı bağlamı

Son Güncelleme:Oct 06, 2026

Çağrı bağlamı; arayüze özel parametreler dışındaki çağrı özelliklerini ve iletilen özel verileri içerir. Çağrı özellikleri arasında IP adresi, çağrıyı başlatan uygulamanın adı ve zaman aşımı süresi bulunur.

Devam eden çağrı bağlamını belirtme ve alma

com.taobao.hsf.util.RequestCtxUtil sınıfı, çağrı bağlamını belirtmek ve almak için statik bir yöntem sunar. ThreadLocal tabanlı olan getxxx yöntemi, xxx özelliğini ThreadLocal değişkeninden kaldırır. Bu yöntem yalnızca geçerli iş parçacığının tek bir çağrısı için geçerlidir.

Aşağıdaki tabloda belirli özellikleri belirtmek ve almak için kullanılan yöntemler açıklanmaktadır.

  • Tüketiciler

    Yöntem Açıklama
    setRequestTimeout() Tek bir çağrı için zaman aşımı süresini belirtir.
    setUserId() Geçerli çağrıdaki birim hizmetinin kullanıcı ID değerini belirtir. Bu yöntem genel çağrılar için gereklidir.
    getProviderIp() En son çağrılan sağlayıcının IP adresini alır.
    setTargetServerIp(String ip) Geçerli iş parçacığının sonraki çağrısında gerekli sağlayıcının IP adresini belirtir. Bu IP adresi, bellekte sağlanan hizmetlerin IP adresi listesinde yer almalıdır.
    setDirectTargetServerIp(String targetIp) Geçerli iş parçacığının sonraki çağrısında sağlayıcının IP adresini belirtir. Bu yöntem kayıt defterini atlar ve bellekteki IP adresi listesini yok sayar.
  • Sağlayıcılar

    Yöntem Açıklama
    getClientIp() Arayanın IP adresini alır.
    getAppNameOfClient() Arayan tarafından kullanılan uygulamanın adını alır.
    isHttpRequest() Çağrının bir HTTP çağrısı olup olmadığını belirtir.
    getHttpHeader(String key) HTTP isteğinin başlık özelliğini alır.

Özel istek bağlamını iletme

RpcContext, arayüzde değişiklik yapmadan ek verileri sağlayıcıya iletmek için bir yöntem sunar. Parametre türü özel etki alanı nesnesi (DO) türü veya temel bir tür olabilir. Eş uçtaki sistemin aynı türdeki parametreleri serileştirebildiğinden emin olun.

  • Tüketici bir çağrı başlatmadan önce bağlamı belirtin.

    //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);
  • Sağlayıcının yöntemlerini kullanarak bağlamı alın.

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