SpringCloud 手動設置范圍

2023-12-01 15:57 更新

編寫新工具時,將您創(chuàng)建的跨度作為當前跨度放置在示波器中很重要。這樣做不僅使用戶可以使用Tracer.currentSpan()訪問它,而且還允許自定義文件(例如SLF4J MDC)查看當前的跟蹤ID。

Tracer.withSpanInScope(Span)促進了這一點,并且通過使用try-with-resources慣用法最方便地使用。每當可能調(diào)用外部代碼(例如進行攔截器或其他操作)時,請將范圍放在范圍內(nèi),如以下示例所示:

@Autowired Tracer tracer;

try (SpanInScope ws = tracer.withSpanInScope(span)) {
  return inboundRequest.invoke();
} finally { // note the scope is independent of the span
  span.finish();
}

在極端情況下,您可能需要臨時清除當前跨度(例如,啟動不應與當前請求關聯(lián)的任務)。為此,請將null傳遞給withSpanInScope,如以下示例所示:

@Autowired Tracer tracer;

try (SpanInScope cleared = tracer.withSpanInScope(null)) {
  startBackgroundThread();
}
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號