This commit is contained in:
redkale
2023-10-20 14:54:41 +08:00
parent fa8225fb1b
commit 482a3313c4
5 changed files with 25 additions and 2 deletions

View File

@@ -11,6 +11,7 @@ import java.util.logging.Logger;
import org.redkale.annotation.Resource;
import org.redkale.boot.Application;
import org.redkale.net.http.*;
import org.redkale.util.Traces;
import org.redkale.util.Utility;
/**
@@ -73,6 +74,9 @@ public class HttpClusterRpcClient extends HttpRpcClient {
}
private CompletableFuture<HttpResult<byte[]>> httpAsync(boolean produce, Serializable userid, HttpSimpleRequest req) {
if (Utility.isEmpty(req.getTraceid())) {
req.setTraceid(Traces.currentTraceid());
}
String module = req.getRequestURI();
module = module.substring(1); //去掉/
module = module.substring(0, module.indexOf('/'));
@@ -94,6 +98,9 @@ public class HttpClusterRpcClient extends HttpRpcClient {
if (req.isRpc()) {
clientHeaders.put(Rest.REST_HEADER_RPC, "true");
}
if (Utility.isNotEmpty(req.getTraceid())) {
clientHeaders.put(Rest.REST_HEADER_TRACEID, req.getTraceid());
}
if (req.isFrombody()) {
clientHeaders.put(Rest.REST_HEADER_PARAM_FROM_BODY, "true");
}

View File

@@ -13,11 +13,12 @@ import java.util.concurrent.CompletableFuture;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.redkale.boot.*;
import org.redkale.cluster.HttpRpcClient;
import org.redkale.convert.Convert;
import org.redkale.convert.json.JsonConvert;
import org.redkale.net.http.*;
import org.redkale.util.RedkaleException;
import org.redkale.util.Traces;
import org.redkale.util.Utility;
/**
* 没有配置MQ且也没有ClusterAgent的情况下实现的默认HttpMessageClient实例
@@ -100,6 +101,9 @@ public class HttpLocalRpcClient extends HttpRpcClient {
@Override
public <T> CompletableFuture<T> sendMessage(Serializable userid, String groupid, HttpSimpleRequest request, Type type) {
if (Utility.isEmpty(request.getTraceid())) {
request.setTraceid(Traces.currentTraceid());
}
String topic = generateHttpReqTopic(request, request.getPath());
HttpServlet servlet = findHttpServlet(topic);
CompletableFuture future = new CompletableFuture();
@@ -122,6 +126,9 @@ public class HttpLocalRpcClient extends HttpRpcClient {
@Override
public CompletableFuture<HttpResult<byte[]>> sendMessage(String topic, Serializable userid, String groupid, HttpSimpleRequest request) {
if (Utility.isEmpty(request.getTraceid())) {
request.setTraceid(Traces.currentTraceid());
}
HttpServlet servlet = findHttpServlet(topic);
if (servlet == null) {
if (logger.isLoggable(Level.FINE)) {

View File

@@ -819,6 +819,11 @@ public class HttpRequest extends Request<HttpContext> {
: (vlen == 5 && content[0] == 'f' && content[1] == 'a' && content[2] == 'l' && content[3] == 's' && content[4] == 'e'
? "false" : bytes.toString(true, charset)));
break;
case Rest.REST_HEADER_TRACEID: //rest-traceid
value = bytes.toString(true, charset);
this.traceid = value;
headers.put(name, value);
break;
case Rest.REST_HEADER_CURRUSERID: //rest-curruserid
value = bytes.toString(true, charset);
this.hashid = value.hashCode();

View File

@@ -83,6 +83,7 @@ public class HttpServlet extends Servlet<HttpContext, HttpRequest, HttpResponse>
response.updateNonBlocking(false);
response.getWorkExecutor().execute(() -> {
try {
Traces.computeIfAbsent(request.getTraceid());
entry.servlet.execute(request, response);
} catch (Throwable t) {
response.getContext().getLogger().log(Level.WARNING, "Servlet occur exception. request = " + request, t);

View File

@@ -44,6 +44,9 @@ public final class Rest {
//请求是否为rpc协议值类型: 布尔取值为true、false
public static final String REST_HEADER_RPC = "rest-rpc";
//traceid值类型: 字符串
public static final String REST_HEADER_TRACEID = "rest-traceid";
//当前用户ID值值类型: 字符串
public static final String REST_HEADER_CURRUSERID = "rest-curruserid";
@@ -348,7 +351,7 @@ public final class Rest {
public static String getHttpRespTopicPrefix() {
return "http.resp.";
}
//仅供Rest动态构建里 currentUserid() 使用
@AsmDepends
public static <T> T orElse(T t, T defValue) {