CAT中實現非同步請求的呼叫鏈檢視

2022-02-06 14:47:52 字數 1417 閱讀 5455

對於同步請求api,cat服務端自然是可以看到的。同步請求api的例項可以參考之前的文章《五分鐘後,你將學會在springboot專案中如何整合cat呼叫鏈》。但對於非同步請求api,因為不在同一執行緒中,在子執行緒中無法獲取到父執行緒訊息樹,所以在cat服務端是無法看到的對應請求。

首先,寫乙個類實現cat.context介面,用於存放訊息樹的上下文資訊:

public class catcontext implements cat.context 

@override

public string getproperty(string key)

@override

public string tostring() ';

}}

我們可以先父執行緒訊息樹的上下文資訊儲存下來,然後在子執行緒使用。先寫乙個存放上下文資訊的地方:

public class contextwarehouse 

public static catcontext getcontext()

return context;

}}

實現callable介面,建立乙個自定義的類,實現了在子執行緒中存放父執行緒的上下文資訊的功能:

public class onemorecallableimplements callable

@override

public v call() throws exception

}

定義一些常量,在呼叫api時作為header中的key:

public class cathttpconstants
埋點時,在呼叫api的httpclient工具類中統一增加**,以get方式為例:

下面寫乙個非同步請求的例項,通過多個商品id非同步獲取對應的商品詳細資訊:

public class productservice  catch (exception e) 

})));

}listproductinfos = new arraylist<>();

for (futurefuture : futures) catch (exception e)

}return productinfos;

}}

這樣寫以後,在cat服務端的transaction報表中就可以檢視到非同步請求了。

CAT中實現非同步請求的呼叫鏈檢視

對於同步請求api,cat服務端自然是可以看到的。同步請求api的例項可以參考之前的文章 五分鐘後,你將學會在springboot專案中如何整合cat呼叫鏈 但對於非同步請求api,因為不在同一執行緒中,在子執行緒中無法獲取到父執行緒訊息樹,所以在cat服務端是無法看到的對應請求。首先,寫乙個類實現...

php處理非同步請求 PHP實現非同步呼叫方法研究

瀏覽器和伺服器之間是通過 http 協議進行連線通訊的。這是一種基於請求和響應模型的協議。瀏覽器通過 url 向伺服器發起請求,web 伺服器接收到請求,執行一段程式,然後做出響應,傳送相應的html 給客戶端。這就有了乙個問題,web 伺服器執行一段程式,可能幾毫秒就完成,也可能幾分鐘都完不成。如...

在VB中實現非同步呼叫

vb本身是不支援多執行緒的。但是vb中的部件有程序內及程序外的區分,因此這裡我使用程序外部件來實現非同步呼叫。伺服器端 新建乙個activeexe工程,加入乙個窗體,窗體中存放乙個timer控制項 新增乙個類模組。如下 private withevents m timer as timer publ...