Java 无法从标头获取New Relic跟踪ID
我一直在尝试从跟踪服务请求中获取New Relic跟踪/事务ID 不幸的是,检索值时遇到问题 当我试图从标题中提取值时,它们不会被填充 我可以得到分布式负载,但不能完全确定我在看什么 结果:Java 无法从标头获取New Relic跟踪ID,java,newrelic,distributed-tracing,Java,Newrelic,Distributed Tracing,我一直在尝试从跟踪服务请求中获取New Relic跟踪/事务ID 不幸的是,检索值时遇到问题 当我试图从标题中提取值时,它们不会被填充 我可以得到分布式负载,但不能完全确定我在看什么 结果: @RequestHeader(name=“X-NewRelic-ID”,defaultValue=“null”)=“null” @RequestHeader(name=“X-NewRelic-Transaction”,defaultValue=“null”)=“null” NewRelic.getAgent
@RequestHeader(name=“X-NewRelic-ID”,defaultValue=“null”)
=“null”@RequestHeader(name=“X-NewRelic-Transaction”,defaultValue=“null”)
=“null”NewRelic.getAgent().getTransaction().getRequestMetadata()
=nullNewRelic.getAgent().getTransaction().getResponseMetadata()
=null
分布式负载=
{
"d": {
"ac": "1234567",
"pr": 1.300000,
"tx": "15c1855ad4955424",
"ti": 1234567890123,
"ty": "App",
"tr": "13c1423ad1941424",
"sa": true,
"ap": "12345678"
},
"v": [
0,
1
]
}
网络服务:
导入java.text.MessageFormat;
导入org.apache.commons.lang3.StringUtils;
导入org.springframework.beans.factory.annotation.Autowired;
导入org.springframework.beans.factory.annotation.Qualifier;
导入org.springframework.http.MediaType;
导入org.springframework.http.ResponseEntity;
导入org.springframework.web.bind.annotation.CrossOrigin;
导入org.springframework.web.bind.annotation.RequestBody;
导入org.springframework.web.bind.annotation.RequestHeader;
导入org.springframework.web.bind.annotation.RequestMapping;
导入org.springframework.web.bind.annotation.RequestMethod;
导入org.springframework.web.bind.annotation.RestController;
导入com.bah.egis.recompite.service.JsonService;
导入com.newrelic.api.agent.DistributedTracePayload;
导入com.newrelic.api.agent.newrelic;
导入com.newrelic.api.agent.Trace;
导入io.swagger.annotations.Api;
导入io.swagger.annotations.api操作;
@RestController
@Api(value=“JSON Api”,tags={“JSON REST Api”})
公共类测试控制器{
@限定符(“jsonService”)
@自动连线
私有JsonService JsonService;
@跟踪(dispatcher=true)
@交叉起源
@ApiOperation(value=“摄取JSON数据并处理它”)
@RequestMapping(value=“/registerTraceID”,method=RequestMethod.POST,consumes=MediaType.APPLICATION\u JSON\u value,products=MediaType.APPLICATION\u JSON\u value)
public ResponseEntity registerTraceID(@RequestBody String jsonData,@RequestHeader(name=“X-NewRelic-ID”,defaultValue=”“)String newRelicID,@RequestHeader(name=“X-NewRelic-Transaction”,defaultValue=“”)String newRelicTransactionID){
字符串结果;
if(StringUtils.isBlank(newRelicID)和&StringUtils.isBlank(newRelicTransactionID)){
DistributedTracePayload DistributedTracePayload=NewRelic.getAgent().getTransaction().createDistributedTracePayload();
如果(distributedTracePayload==null){
结果=”;
}否则{
结果=distributedTracePayload.text();
}
}否则{
结果=MessageFormat.format(“{'X-NewRelic-ID:{0},X-NewRelic-Transaction:{1}'”,newRelicID,newRelicTransactionID);
}
返回ResponseEntity.ok().body(结果);
}
}
import java.text.MessageFormat;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import com.bah.egis.recompete.service.JsonService;
import com.newrelic.api.agent.DistributedTracePayload;
import com.newrelic.api.agent.NewRelic;
import com.newrelic.api.agent.Trace;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@RestController
@Api(value = "JSON API", tags = { "JSON REST Api" })
public class TestController {
@Qualifier("jsonService")
@Autowired
private JsonService jsonService;
@Trace(dispatcher=true)
@CrossOrigin
@ApiOperation(value = "Ingest JSON Data and do something with it")
@RequestMapping(value = "/registerTraceID", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<String> registerTraceID(@RequestBody String jsonData, @RequestHeader(name="X-NewRelic-ID", defaultValue="") String newRelicID, @RequestHeader(name="X-NewRelic-Transaction", defaultValue="") String newRelicTransactionID) {
String result;
if (StringUtils.isBlank(newRelicID) && StringUtils.isBlank(newRelicTransactionID)) {
DistributedTracePayload distributedTracePayload = NewRelic.getAgent().getTransaction().createDistributedTracePayload();
if (distributedTracePayload == null) {
result = "";
} else {
result = distributedTracePayload.text();
}
} else {
result = MessageFormat.format("'{'X-NewRelic-ID: {0}, X-NewRelic-Transaction: {1}'}'", newRelicID, newRelicTransactionID);
}
return ResponseEntity.ok().body(result);
}
}