Webui use register center to find routing server. and use searchClient to search traceId. Waiting for integration test.

This commit is contained in:
wusheng 2016-12-07 09:46:53 +08:00
parent 96e013021c
commit dd2484477c
1 changed files with 24 additions and 3 deletions

View File

@ -1,8 +1,13 @@
package com.a.eye.skywalking.web.client.routing;
import com.a.eye.skywalking.network.grpc.QueryTask;
import com.a.eye.skywalking.network.grpc.SearchResult;
import com.a.eye.skywalking.network.grpc.TraceId;
import com.a.eye.skywalking.network.grpc.client.TraceSearchClient;
import com.a.eye.skywalking.web.dto.TraceNodeInfo;
import com.a.eye.skywalking.web.dto.TraceNodesResult;
import java.util.List;
import java.util.concurrent.ThreadLocalRandom;
/**
@ -13,15 +18,31 @@ public class SearchClient {
public SearchClient() {
TraceSearchClient[] allSearchClients = RoutingServerWatcher.getAllSearchClient();
if ((allSearchClients.length == 0)) {
throw new RuntimeException("no active routing servers");
}
client = allSearchClients[ThreadLocalRandom.current().nextInt(0, allSearchClients.length)];
}
public TraceNodesResult searchSpan(String traceId){
String[] traceIdSegments = traceId.split(".");
TraceNodesResult traceNodesResult = new TraceNodesResult();
if(traceIdSegments.length != 6){
return new TraceNodesResult();
return traceNodesResult;
}
return new TraceNodesResult();
TraceId.Builder builder = TraceId.newBuilder();
for (String traceIdSegment : traceIdSegments) {
builder.addSegments(Long.parseLong(traceIdSegment));
}
QueryTask.Builder queryTaskBuilder = QueryTask.newBuilder().setTraceId(builder.build());
SearchResult result = client.search(queryTaskBuilder.build());
List<TraceNodeInfo> traceNodes = traceNodesResult.getResult();
result.getSpansList().forEach((span -> {
traceNodes.add(new TraceNodeInfo((span)));
}));
return traceNodesResult;
}
}