全部产品
Search
文档中心

Enterprise Distributed Application Service:Konteks panggilan

更新时间:Jul 02, 2025

Konteks panggilan mencakup properti panggilan dan data khusus yang ditransmisikan selain parameter spesifik antarmuka. Properti panggilan meliputi alamat IP, nama aplikasi yang memulai panggilan, serta periode timeout.

Tentukan dan ambil konteks panggilan berkelanjutan

com.taobao.hsf.util.RequestCtxUtil menyediakan metode statis untuk menentukan dan mengambil konteks panggilan. Berdasarkan ThreadLocal, metode getxxx menghapus properti xxx dari variabel ThreadLocal. Metode ini hanya berlaku untuk satu panggilan tunggal dari thread saat ini.

Tabel berikut menjelaskan metode yang digunakan untuk menentukan dan mengambil properti tertentu.

  • Konsumen
    MetodeDeskripsi
    setRequestTimeout()Menentukan periode timeout untuk satu panggilan tunggal.
    setUserId()Menentukan ID pengguna layanan unit dalam panggilan saat ini. Metode ini diperlukan untuk panggilan generik.
    getProviderIp()Mengambil alamat IP penyedia yang terakhir dipanggil.
    setTargetServerIp(String ip)Menentukan alamat IP penyedia yang diperlukan dalam panggilan berikutnya dari thread saat ini. Alamat IP ini harus disertakan dalam daftar alamat IP untuk layanan yang disediakan di memori.
    setDirectTargetServerIp(String targetIp)Menentukan alamat IP penyedia dalam panggilan berikutnya dari thread saat ini. Metode ini melewati registri dan mengabaikan daftar alamat IP di memori.
  • Penyedia
    MetodeDeskripsi
    getClientIp()Mengambil alamat IP pemanggil.
    getAppNameOfClient()Mengambil nama aplikasi yang digunakan oleh pemanggil.
    isHttpRequest()Menentukan apakah panggilan tersebut merupakan panggilan HTTP.
    getHttpHeader(String key)Mengambil properti header dari permintaan HTTP.

Transmisikan konteks permintaan khusus

RpcContext menyediakan metode untuk mentransmisikan data tambahan ke penyedia tanpa modifikasi antarmuka. Tipe parameter dapat berupa tipe objek domain (DO) khusus atau tipe dasar. Pastikan bahwa ujung peer dapat membuat serialisasi parameter dengan tipe yang sama.

  • Tentukan konteks sebelum konsumen memulai panggilan.
    //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);
  • Ambil konteks menggunakan metode penyedia.
    //get context data
    RPCContext rpcContext = RPCContext.getServerContext();
    String myContext = (String)rpcContext.getAttachment("tetantId");