mirror of
https://github.moeyy.xyz/https://github.com/GeWuYou/forgeboot
synced 2025-10-28 02:36:39 +08:00
refactor(trace): Refactoring the tracking module and migrating to a new location
- Migrated the RequestIdProvider interface from the forgeboot-common-result module to the forgeboot-trace-api module - Refactored the TraceAutoConfiguration class to use a new package structure - Create the forgeboot-trace-api, forgeboot-trace-autoconfigure, and forgeboot-trace-impl modules - Update the location of the relevant classes and files to accommodate the new module structure
This commit is contained in:
parent
88f016dad2
commit
48228574be
@ -1,14 +1,6 @@
|
|||||||
dependencies {
|
extra{
|
||||||
implementation(project(Modules.Core.EXTENSION))
|
setProperty(ProjectFlags.IS_ROOT_MODULE,true)
|
||||||
implementation(project(Modules.Common.RESULT_API))
|
}
|
||||||
|
dependencies {
|
||||||
// Spring Cloud OpenFeign (Compile Only)
|
|
||||||
// https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-openfeign
|
|
||||||
compileOnly(libs.springCloudStarter.openfeign)
|
|
||||||
// Reactor Core (Compile Only)
|
|
||||||
// https://mvnrepository.com/artifact/io.projectreactor/reactor-core
|
|
||||||
compileOnly(libs.reactor.core)
|
|
||||||
|
|
||||||
compileOnly(libs.springBootStarter.web)
|
|
||||||
compileOnly(libs.springBootStarter.webflux)
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package com.gewuyou.forgeboot.common.result.api
|
package com.gewuyou.forgeboot.trace.api
|
||||||
/**
|
/**
|
||||||
* 请求ID提供商接口
|
* 请求ID提供商接口
|
||||||
*
|
*
|
||||||
@ -0,0 +1 @@
|
|||||||
|
spring.application.name=api
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
|
||||||
|
dependencies {
|
||||||
|
compileOnly(platform(libs.springBootDependencies.bom))
|
||||||
|
compileOnly(platform(libs.springCloudDependencies.bom))
|
||||||
|
compileOnly(libs.springBootStarter.web)
|
||||||
|
compileOnly(libs.springBootStarter.webflux)
|
||||||
|
compileOnly(project(Modules.TRACE.API))
|
||||||
|
compileOnly(project(Modules.TRACE.IMPL))
|
||||||
|
// Spring Cloud OpenFeign (Compile Only)
|
||||||
|
// https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-openfeign
|
||||||
|
compileOnly(libs.springCloudStarter.openfeign)
|
||||||
|
// Reactor Core (Compile Only)
|
||||||
|
// https://mvnrepository.com/artifact/io.projectreactor/reactor-core
|
||||||
|
compileOnly(libs.reactor.core)
|
||||||
|
}
|
||||||
@ -1,13 +1,14 @@
|
|||||||
package com.gewuyou.forgeboot.trace.config
|
package com.gewuyou.forgeboot.trace.autoconfig
|
||||||
|
|
||||||
import com.gewuyou.forgeboot.common.result.api.RequestIdProvider
|
|
||||||
import com.gewuyou.forgeboot.trace.config.entities.TraceProperties
|
import com.gewuyou.forgeboot.trace.api.RequestIdProvider
|
||||||
import com.gewuyou.forgeboot.trace.decorator.RequestIdTaskDecorator
|
import com.gewuyou.forgeboot.trace.impl.config.TraceProperties
|
||||||
import com.gewuyou.forgeboot.trace.filter.ReactiveRequestIdFilter
|
import com.gewuyou.forgeboot.trace.impl.decorator.RequestIdTaskDecorator
|
||||||
import com.gewuyou.forgeboot.trace.filter.RequestIdFilter
|
import com.gewuyou.forgeboot.trace.impl.filter.ReactiveRequestIdFilter
|
||||||
import com.gewuyou.forgeboot.trace.filter.WebClientRequestIdFilter
|
import com.gewuyou.forgeboot.trace.impl.filter.RequestIdFilter
|
||||||
import com.gewuyou.forgeboot.trace.interceptor.FeignRequestIdInterceptor
|
import com.gewuyou.forgeboot.trace.impl.filter.WebClientRequestIdFilter
|
||||||
import com.gewuyou.forgeboot.trace.provider.TraceRequestIdProvider
|
import com.gewuyou.forgeboot.trace.impl.interceptor.FeignRequestIdInterceptor
|
||||||
|
import com.gewuyou.forgeboot.trace.impl.provider.TraceRequestIdProvider
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
|
||||||
@ -0,0 +1 @@
|
|||||||
|
com.gewuyou.forgeboot.trace.autoconfig.TraceAutoConfiguration
|
||||||
12
forgeboot-trace/forgeboot-trace-impl/build.gradle.kts
Normal file
12
forgeboot-trace/forgeboot-trace-impl/build.gradle.kts
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
dependencies {
|
||||||
|
implementation(project(Modules.Core.EXTENSION))
|
||||||
|
compileOnly(project(Modules.TRACE.API))
|
||||||
|
compileOnly(platform(libs.springBootDependencies.bom))
|
||||||
|
compileOnly(platform(libs.springCloudDependencies.bom))
|
||||||
|
compileOnly(libs.springBootStarter.webflux)
|
||||||
|
compileOnly(libs.springBootStarter.web)
|
||||||
|
// Spring Cloud OpenFeign (Compile Only)
|
||||||
|
// https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-openfeign
|
||||||
|
compileOnly(libs.springCloudStarter.openfeign)
|
||||||
|
kapt(libs.springBoot.configuration.processor)
|
||||||
|
}
|
||||||
@ -0,0 +1,30 @@
|
|||||||
|
package com.gewuyou.forgeboot.trace.impl.config
|
||||||
|
|
||||||
|
import org.springframework.boot.context.properties.ConfigurationProperties
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 跟踪属性
|
||||||
|
* 该类用于配置和管理请求跟踪相关的属性,通过这些属性可以对请求进行唯一的标识和跟踪
|
||||||
|
* 主要功能包括定义请求ID的HTTP头名称、请求ID在MDC中的键名称,以及忽略跟踪的URL模式
|
||||||
|
*
|
||||||
|
* @author gewuyou
|
||||||
|
* @since 2025-05-02 20:58:45
|
||||||
|
*/
|
||||||
|
@ConfigurationProperties(prefix = "forgeboot.trace")
|
||||||
|
class TraceProperties {
|
||||||
|
/**
|
||||||
|
* HTTP请求头中用于传递请求ID的字段名称,默认为"X-Request-Id"。
|
||||||
|
*/
|
||||||
|
var requestIdHeaderName: String = "X-Request-Id"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MDC(Mapped Diagnostic Context)中用于存储请求ID的键名,默认为"requestId"。
|
||||||
|
*/
|
||||||
|
var requestIdMdcKey: String = "requestId"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 配置忽略日志记录的路径模式,通常用于静态资源文件,
|
||||||
|
* 默认忽略以.css、.js、.png等结尾的静态资源请求。
|
||||||
|
*/
|
||||||
|
var ignorePatten = arrayOf(".*\\.(css|js|png|jpg|jpeg|gif|svg)")
|
||||||
|
}
|
||||||
@ -1,6 +1,6 @@
|
|||||||
package com.gewuyou.forgeboot.trace.decorator
|
package com.gewuyou.forgeboot.trace.impl.decorator
|
||||||
|
|
||||||
import com.gewuyou.forgeboot.trace.config.entities.TraceProperties
|
import com.gewuyou.forgeboot.trace.impl.config.TraceProperties
|
||||||
import org.slf4j.MDC
|
import org.slf4j.MDC
|
||||||
import org.springframework.core.task.TaskDecorator
|
import org.springframework.core.task.TaskDecorator
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package com.gewuyou.forgeboot.trace.extension
|
package com.gewuyou.forgeboot.trace.impl.extension
|
||||||
|
|
||||||
import jakarta.servlet.http.HttpServletRequest
|
import jakarta.servlet.http.HttpServletRequest
|
||||||
import org.springframework.http.HttpMethod
|
import org.springframework.http.HttpMethod
|
||||||
@ -1,11 +1,12 @@
|
|||||||
package com.gewuyou.forgeboot.trace.filter
|
package com.gewuyou.forgeboot.trace.impl.filter
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
import com.gewuyou.forgeboot.core.extension.log
|
import com.gewuyou.forgeboot.core.extension.log
|
||||||
import com.gewuyou.forgeboot.trace.config.entities.TraceProperties
|
import com.gewuyou.forgeboot.trace.impl.config.TraceProperties
|
||||||
import com.gewuyou.forgeboot.trace.extension.isSkipRequest
|
import com.gewuyou.forgeboot.trace.impl.extension.isSkipRequest
|
||||||
import com.gewuyou.forgeboot.trace.util.RequestIdUtil
|
import com.gewuyou.forgeboot.trace.impl.util.RequestIdUtil
|
||||||
|
|
||||||
import org.slf4j.MDC
|
import org.slf4j.MDC
|
||||||
import org.springframework.web.server.ServerWebExchange
|
import org.springframework.web.server.ServerWebExchange
|
||||||
import org.springframework.web.server.WebFilter
|
import org.springframework.web.server.WebFilter
|
||||||
@ -36,10 +37,10 @@ class ReactiveRequestIdFilter(
|
|||||||
val requestIdMdcKey = traceProperties.requestIdMdcKey
|
val requestIdMdcKey = traceProperties.requestIdMdcKey
|
||||||
// 尝试从请求头中获取 requestId,如果存在则设置到 RequestIdUtil 中,否则生成一个新的 requestId
|
// 尝试从请求头中获取 requestId,如果存在则设置到 RequestIdUtil 中,否则生成一个新的 requestId
|
||||||
request.headers[requestIdHeader]?.let {
|
request.headers[requestIdHeader]?.let {
|
||||||
it.firstOrNull()?.let(RequestIdUtil::setRequestId) ?: RequestIdUtil.generateRequestId()
|
it.firstOrNull()?.let(RequestIdUtil::requestId::set) ?: RequestIdUtil.generateRequestId()
|
||||||
} ?: RequestIdUtil.generateRequestId()
|
} ?: RequestIdUtil.generateRequestId()
|
||||||
// 获取当前的 requestId
|
// 获取当前的 requestId
|
||||||
val currentRequestId = RequestIdUtil.getRequestId()
|
val currentRequestId = RequestIdUtil.requestId
|
||||||
// 将 requestId 设置到日志中
|
// 将 requestId 设置到日志中
|
||||||
MDC.put(requestIdMdcKey, currentRequestId)
|
MDC.put(requestIdMdcKey, currentRequestId)
|
||||||
log.info("设置 Request id: $currentRequestId")
|
log.info("设置 Request id: $currentRequestId")
|
||||||
@ -53,7 +54,7 @@ class ReactiveRequestIdFilter(
|
|||||||
return chain.filter(mutatedExchange)
|
return chain.filter(mutatedExchange)
|
||||||
// ✅ 让 Reactor 线程也能获取 requestId
|
// ✅ 让 Reactor 线程也能获取 requestId
|
||||||
// 将 requestId 写入 Reactor 的上下文中,以便在异步处理中也能访问
|
// 将 requestId 写入 Reactor 的上下文中,以便在异步处理中也能访问
|
||||||
.contextWrite { ctx -> ctx.put(requestIdMdcKey, currentRequestId) }
|
.contextWrite { ctx -> ctx.put(requestIdMdcKey, currentRequestId!!) }
|
||||||
.doFinally {
|
.doFinally {
|
||||||
// 清理 MDC 中的 requestId,避免内存泄漏
|
// 清理 MDC 中的 requestId,避免内存泄漏
|
||||||
MDC.remove(requestIdMdcKey)
|
MDC.remove(requestIdMdcKey)
|
||||||
@ -1,10 +1,11 @@
|
|||||||
package com.gewuyou.forgeboot.trace.filter
|
package com.gewuyou.forgeboot.trace.impl.filter
|
||||||
|
|
||||||
|
|
||||||
import com.gewuyou.forgeboot.core.extension.log
|
import com.gewuyou.forgeboot.core.extension.log
|
||||||
import com.gewuyou.forgeboot.trace.config.entities.TraceProperties
|
import com.gewuyou.forgeboot.trace.impl.config.TraceProperties
|
||||||
import com.gewuyou.forgeboot.trace.extension.isSkipRequest
|
import com.gewuyou.forgeboot.trace.impl.extension.isSkipRequest
|
||||||
import com.gewuyou.forgeboot.trace.util.RequestIdUtil
|
import com.gewuyou.forgeboot.trace.impl.util.RequestIdUtil
|
||||||
|
|
||||||
import jakarta.servlet.FilterChain
|
import jakarta.servlet.FilterChain
|
||||||
import jakarta.servlet.http.HttpServletRequest
|
import jakarta.servlet.http.HttpServletRequest
|
||||||
import jakarta.servlet.http.HttpServletResponse
|
import jakarta.servlet.http.HttpServletResponse
|
||||||
@ -39,13 +40,13 @@ class RequestIdFilter(
|
|||||||
try {
|
try {
|
||||||
// 尝试从请求头中获取 requestId
|
// 尝试从请求头中获取 requestId
|
||||||
request.getHeader(requestIdHeader)?.also(
|
request.getHeader(requestIdHeader)?.also(
|
||||||
RequestIdUtil::setRequestId
|
RequestIdUtil::requestId::set
|
||||||
) ?: run {
|
) ?: run {
|
||||||
// 如果没有,则生成新的 requestId
|
// 如果没有,则生成新的 requestId
|
||||||
RequestIdUtil.generateRequestId()
|
RequestIdUtil.generateRequestId()
|
||||||
}
|
}
|
||||||
// 获取 requestId
|
// 获取 requestId
|
||||||
val requestId = RequestIdUtil.getRequestId()
|
val requestId = RequestIdUtil.requestId
|
||||||
// 将requestId 设置到日志中
|
// 将requestId 设置到日志中
|
||||||
MDC.put(requestIdMdcKey, requestId)
|
MDC.put(requestIdMdcKey, requestId)
|
||||||
log.info("设置 Request id: $requestId")
|
log.info("设置 Request id: $requestId")
|
||||||
@ -1,9 +1,10 @@
|
|||||||
package com.gewuyou.forgeboot.trace.filter
|
package com.gewuyou.forgeboot.trace.impl.filter
|
||||||
|
|
||||||
import com.gewuyou.forgeboot.core.extension.log
|
import com.gewuyou.forgeboot.core.extension.log
|
||||||
import com.gewuyou.forgeboot.trace.config.entities.TraceProperties
|
import com.gewuyou.forgeboot.trace.impl.config.TraceProperties
|
||||||
import com.gewuyou.forgeboot.trace.extension.isSkipRequest
|
import com.gewuyou.forgeboot.trace.impl.extension.isSkipRequest
|
||||||
import com.gewuyou.forgeboot.trace.util.RequestIdUtil
|
import com.gewuyou.forgeboot.trace.impl.util.RequestIdUtil
|
||||||
|
|
||||||
import org.slf4j.MDC
|
import org.slf4j.MDC
|
||||||
import org.springframework.web.reactive.function.client.ClientRequest
|
import org.springframework.web.reactive.function.client.ClientRequest
|
||||||
import org.springframework.web.reactive.function.client.ClientResponse
|
import org.springframework.web.reactive.function.client.ClientResponse
|
||||||
@ -35,10 +36,10 @@ class WebClientRequestIdFilter(
|
|||||||
val requestIdMdcKey = traceProperties.requestIdMdcKey
|
val requestIdMdcKey = traceProperties.requestIdMdcKey
|
||||||
// 尝试从请求头中获取 requestId,如果存在则设置到 RequestIdUtil 中,否则生成一个新的 requestId
|
// 尝试从请求头中获取 requestId,如果存在则设置到 RequestIdUtil 中,否则生成一个新的 requestId
|
||||||
request.headers()[requestIdHeader]?.let {
|
request.headers()[requestIdHeader]?.let {
|
||||||
it.firstOrNull()?.let(RequestIdUtil::setRequestId) ?: RequestIdUtil.generateRequestId()
|
it.firstOrNull()?.let(RequestIdUtil::requestId::set) ?: RequestIdUtil.generateRequestId()
|
||||||
} ?: RequestIdUtil.generateRequestId()
|
} ?: RequestIdUtil.generateRequestId()
|
||||||
// 获取当前的 requestId
|
// 获取当前的 requestId
|
||||||
val currentRequestId = RequestIdUtil.getRequestId()
|
val currentRequestId = RequestIdUtil.requestId
|
||||||
// 将 requestId 设置到日志中
|
// 将 requestId 设置到日志中
|
||||||
MDC.put(requestIdMdcKey, currentRequestId)
|
MDC.put(requestIdMdcKey, currentRequestId)
|
||||||
log.info("设置 Request id: $currentRequestId")
|
log.info("设置 Request id: $currentRequestId")
|
||||||
@ -1,10 +1,10 @@
|
|||||||
package com.gewuyou.forgeboot.trace.interceptor
|
package com.gewuyou.forgeboot.trace.impl.interceptor
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
import com.gewuyou.forgeboot.core.extension.log
|
import com.gewuyou.forgeboot.core.extension.log
|
||||||
import com.gewuyou.forgeboot.trace.config.entities.TraceProperties
|
import com.gewuyou.forgeboot.trace.impl.config.TraceProperties
|
||||||
import com.gewuyou.forgeboot.trace.util.RequestIdUtil
|
import com.gewuyou.forgeboot.trace.impl.util.RequestIdUtil
|
||||||
import feign.RequestInterceptor
|
import feign.RequestInterceptor
|
||||||
import feign.RequestTemplate
|
import feign.RequestTemplate
|
||||||
|
|
||||||
@ -19,7 +19,7 @@ class FeignRequestIdInterceptor(
|
|||||||
) : RequestInterceptor {
|
) : RequestInterceptor {
|
||||||
override fun apply(template: RequestTemplate) {
|
override fun apply(template: RequestTemplate) {
|
||||||
// 尝试获取当前请求的请求id
|
// 尝试获取当前请求的请求id
|
||||||
val requestId = RequestIdUtil.getRequestId()
|
val requestId = RequestIdUtil.requestId
|
||||||
requestId?.let {
|
requestId?.let {
|
||||||
// 如果请求id存在,则添加到请求头中
|
// 如果请求id存在,则添加到请求头中
|
||||||
template.header(traceProperties.requestIdHeaderName, requestId)
|
template.header(traceProperties.requestIdHeaderName, requestId)
|
||||||
@ -1,7 +1,8 @@
|
|||||||
package com.gewuyou.forgeboot.trace.provider
|
package com.gewuyou.forgeboot.trace.impl.provider
|
||||||
|
|
||||||
|
import com.gewuyou.forgeboot.trace.api.RequestIdProvider
|
||||||
|
import com.gewuyou.forgeboot.trace.impl.util.RequestIdUtil
|
||||||
|
|
||||||
import com.gewuyou.forgeboot.common.result.api.RequestIdProvider
|
|
||||||
import com.gewuyou.forgeboot.trace.util.RequestIdUtil
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*跟踪请求ID提供商
|
*跟踪请求ID提供商
|
||||||
@ -18,6 +19,6 @@ class TraceRequestIdProvider: RequestIdProvider {
|
|||||||
* @return 请求ID的字符串表示
|
* @return 请求ID的字符串表示
|
||||||
*/
|
*/
|
||||||
override fun getRequestId(): String {
|
override fun getRequestId(): String {
|
||||||
return RequestIdUtil.getRequestId()
|
return RequestIdUtil.requestId?:throw RuntimeException("requestId is null")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -0,0 +1,26 @@
|
|||||||
|
package com.gewuyou.forgeboot.trace.impl.util
|
||||||
|
|
||||||
|
import java.util.*
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 请求 ID Util
|
||||||
|
* 这个类需配合 RequestIdFilter 使用,用于生成请求 ID,并将其绑定到线程变量中,供后续可能需要的地方使用。
|
||||||
|
* @author gewuyou
|
||||||
|
* @since 2025-01-02 14:27:45
|
||||||
|
*/
|
||||||
|
object RequestIdUtil {
|
||||||
|
private val REQUEST_ID_HOLDER = ThreadLocal<String>()
|
||||||
|
fun generateRequestId() {
|
||||||
|
REQUEST_ID_HOLDER.set(UUID.randomUUID().toString())
|
||||||
|
}
|
||||||
|
|
||||||
|
var requestId: String?
|
||||||
|
get() = REQUEST_ID_HOLDER.get()
|
||||||
|
set(uuid) {
|
||||||
|
REQUEST_ID_HOLDER.set(uuid)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun removeRequestId() {
|
||||||
|
REQUEST_ID_HOLDER.remove()
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1 @@
|
|||||||
|
spring.application.name=impl
|
||||||
@ -1,54 +0,0 @@
|
|||||||
package com.gewuyou.forgeboot.trace.config.entities;
|
|
||||||
|
|
||||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 跟踪属性
|
|
||||||
* 该类用于配置和管理请求跟踪相关的属性,通过这些属性可以对请求进行唯一的标识和跟踪
|
|
||||||
* 主要功能包括定义请求ID的HTTP头名称、请求ID在MDC中的键名称,以及忽略跟踪的URL模式
|
|
||||||
*
|
|
||||||
* @author gewuyou
|
|
||||||
* @since 2025-05-02 20:58:45
|
|
||||||
*/
|
|
||||||
@ConfigurationProperties(prefix = "forgeboot.trace")
|
|
||||||
public class TraceProperties {
|
|
||||||
/**
|
|
||||||
* HTTP请求头中用于传递请求ID的字段名称,默认为"X-Request-Id"。
|
|
||||||
*/
|
|
||||||
private String requestIdHeaderName = "X-Request-Id";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* MDC(Mapped Diagnostic Context)中用于存储请求ID的键名,默认为"requestId"。
|
|
||||||
*/
|
|
||||||
private String requestIdMdcKey = "requestId";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 配置忽略日志记录的路径模式,通常用于静态资源文件,
|
|
||||||
* 默认忽略以.css、.js、.png等结尾的静态资源请求。
|
|
||||||
*/
|
|
||||||
private String[] ignorePatten = new String[]{".*\\.(css|js|png|jpg|jpeg|gif|svg)"};
|
|
||||||
|
|
||||||
public String getRequestIdHeaderName() {
|
|
||||||
return requestIdHeaderName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String[] getIgnorePatten() {
|
|
||||||
return ignorePatten;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setIgnorePatten(String[] ignorePatten) {
|
|
||||||
this.ignorePatten = ignorePatten;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRequestIdHeaderName(String requestIdHeaderName) {
|
|
||||||
this.requestIdHeaderName = requestIdHeaderName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRequestIdMdcKey() {
|
|
||||||
return requestIdMdcKey;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRequestIdMdcKey(String requestIdMdcKey) {
|
|
||||||
this.requestIdMdcKey = requestIdMdcKey;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,30 +0,0 @@
|
|||||||
package com.gewuyou.forgeboot.trace.util;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 请求 ID Util
|
|
||||||
* 这个类需配合 RequestIdFilter 使用,用于生成请求 ID,并将其绑定到线程变量中,供后续可能需要的地方使用。
|
|
||||||
* @author gewuyou
|
|
||||||
* @since 2025-01-02 14:27:45
|
|
||||||
*/
|
|
||||||
public class RequestIdUtil {
|
|
||||||
private static final ThreadLocal<String> REQUEST_ID_HOLDER = new ThreadLocal<>();
|
|
||||||
private RequestIdUtil() {
|
|
||||||
}
|
|
||||||
public static void generateRequestId() {
|
|
||||||
REQUEST_ID_HOLDER.set(UUID.randomUUID().toString());
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String getRequestId() {
|
|
||||||
return REQUEST_ID_HOLDER.get();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void setRequestId(String uuid) {
|
|
||||||
REQUEST_ID_HOLDER.set(uuid);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void removeRequestId() {
|
|
||||||
REQUEST_ID_HOLDER.remove();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1 +0,0 @@
|
|||||||
com.gewuyou.forgeboot.trace.config.TraceAutoConfiguration
|
|
||||||
Loading…
x
Reference in New Issue
Block a user