我第一次使用侦探需要一些帮助。我目前正在使用sleuth 2.2.3。释放我的要求是我想传播两个字段product id和product type,这样我就可以从其他微服务中读取这两个值,因为我正在使用baggage传播。
1. In one of the microservice in rest API my code is something like this,
BaggageField PRODUCT_ID = BaggageField.create("x-df-product-id");
PRODUCT_ID.updateValue(productId); // I have value of productId that value I want to propogate
BaggageField PRODUCT_TYPE = BaggageField.create("x-df-product-type");
PRODUCT_TYPE.updateValue(productType); // I have value of productType that value I want to propogate
Tracing.newBuilder().propagationFactory(
BaggagePropagation.newFactoryBuilder(B3Propagation.FACTORY)
.add(SingleBaggageField.remote(PRODUCT_ID))
.add(SingleBaggageField.remote(PRODUCT_TYPE))
.build());
In another microservice, I am reading the values like this:
String baggageProductId=BaggageField.getAllValues().entrySet().stream.filter(e ->"PRODUCT_ID".equalIgnoreCase(e.getKey())).map(Map.Entry::getValue).findFirst().orElse(null);
String baggageProducType=BaggageField.getAllValues().entrySet().stream.filter(e ->"PRODUCT_TYPE".equalIgnoreCase(e.getKey())).map(Map.Entry::getValue).findFirst().orElse(null);
in application.yml these are the entries:
sleuth:
baggage:
remoteFields:
-x-df-product-id
-x-df-product-type
but I am getting both values baggageProductId and baggageProducType as null.
I am not using span anywhere is that a problem? not sure how can I read these values. can you please help me?
您必须在应用程序中进行配置。属性
spring.sleuth.propagation-keys[0]= x-df-product-id
spring.sleuth.propagation.tag.whitelisted-keys[0]=x-df-product-id
spring.sleuth.log.slf4j.whitelisted-mdc-keys[0]= x-df-product-id
此源代码org.springframework.cloud.sleuth.autoconfig.TraceBaggageConfigsion
更新:我像这样更新了我的代码,它工作正常,但是...需要一些帮助。
侦探:行李:行李钥匙:
-x-df-product-id
-x-df-product-type
日志slf4。列入白名单的mdc密钥:
-x-df-product-id
-x-df-product-type
2.在Microservice-1中,我有以下代码
BaggageField baggageFieldProductId=BaggageField。getByName(“x-df-product-id”);baggageProductId=baggageFieldProductId。getValue();
BaggageField baggageFieldProductType=BaggageField。getByName(“x-df-product-type”);baggageProductType=baggageFieldProductType。getValue();
我在每个微服务的每个application.yml文件中插入了相同的条目。之后,我能够在微服务1、微服务2、微服务3中检索这些值,但在微服务4中获得空值。不知道为什么?代码检索的逻辑在任何地方都是一样的。
唯一的区别是我的microservices 1,2,3 spring启动版本是2.2.8,microservices 4 spring启动版本是2.3.6。
需要帮助。真的不知道为什么我会得到空值。非常感谢。
我们目前正在使用侦探2.2.3. RELEASE,我们看不到在超文本传输协议标头中传递的字段userId没有传播。下面是我们的代码。 我们怀疑YML文件中的某些问题。我们尝试了以下所有选项,但均无效。 在回退中: %X{行李用户ID:-} 我们在超文本传输协议头中传递userId。
我有一个过滤器(OncePerRequestFilter),它基本上拦截传入的请求并记录traceId、spanId等。它运行良好,这个过滤器位于一个公共模块中,该模块包含在其他项目中,以避免在我的所有微服务中包含spring sleuth依赖项,这就是我将它创建为库的原因,因为对库的任何更改对所有模块都是公共的。现在,我必须添加一个新的传播密钥,它需要通过http头(如trace和spanId)
我理解,随着Spring Cloud Sleuth 3.x.x的出现,您需要指定要传播到远程组件的行李头的名称,如下所示: 对于自定义标题,我认为这很好。我想知道如果行李需要转移,B3/Zipkin会是什么样子。 我记得有一次讨论B3没有指定baggage,但也有一种“约定”,即前缀为“baggage”的字段被转发。 问题1:这是正确的吗,现在仍然是这样,还是在Sleuth 3.x.x中删除了?
我试图建立一个应用程序,它有一个角前端和一个Maven/Spring Boot后端,并建立了我的第一个REST控制器。我的问题是,当我从Angular IDE向后端发送GET HTTP请求时,它会返回一个错误,说明: 我的角代码只是试图使用GET方法(即。httpclient.GET('http://localhost:8080/api/getdata')将数据打印到浏览器控制台,但错误阻止了它的
请提示我如何让侦察行李在联调系统中工作。它在测试通过模拟HTTP请求时按预期工作,但在测试直接调用服务时不工作。我的应用程序是(Spring Boot 2.5.4,Spring Cloud 2020.0.3): 应用yml: 测试:
这是我的问题: 我正在Java EE/Spring/Hibernate应用程序上运行批处理。此批处理调用方法1。该方法调用方法2,该方法可以引发用户异常(扩展RuntimeException的类)。下面是它的样子: 在继续执行时捕获异常,但在事务关闭时,method1结束时抛出回滚异常。 这是堆栈跟踪: 当method2不抛出这个异常时,它工作得很好。 我尝试过的: 设置在 尝试并抓住 但这并没有