gpt4 book ai didi

amazon-kinesis - 如何将 Java Kinesis 客户端库与 X-Ray 一起使用?

转载 作者:行者123 更新时间:2023-12-04 14:24:12 27 4
gpt4 key购买 nike

添加时aws-xray-recorder-sdk-aws-sdk-instrumentor KCL 提出 SegmentNotFoundException .

据我所知,这是因为 KCL 正在启动他们的 own threads所以我调用 AWSXRay.beginSegment()不适用于在这些线程上运行的检测请求,但我没有直接控制这些线程,因此我无法设置上下文/段。

有什么解决方法吗?

最佳答案

KCL 允许提供您自己的实例化 AmazonKinesis客户,AmazonDynamoDb客户和 AmazonCloudWatch客户。

你可以实例化你自己的客户端(使用 AmazonKinesisClientBuilder 等),添加一个 withRequestHandler() 并提供 IRequestHandler2 调用 AWSXRay.beginSegment() 的实例在 beforeRequest()并调用 AWSXRay.endSegment()afterResponse() .这样,请求处理程序就有机会在不同 KCL ExecutorService 实例正在创建的线程上运行您自己的用户代码。

此类请求处理程序的示例:

class XRayTracingHandler extends TracingHandler {
private final String name;

XRayTracingHandler(String name) {
super(AWSXRay.getGlobalRecorder());
this.name = name;
}

@Override
public void beforeRequest(Request<?> request) {
AWSXRay.beginSegment(name);
super.beforeRequest(request);
}

@Override
public void afterResponse(Request<?> request, Response<?> response) {
super.afterResponse(request, response);
AWSXRay.endSegment();
}
}

你可以这样使用:
  final KinesisClientLibConfiguration config = new KinesisClientLibConfiguration(
"my-app-name",
"my-kinesis-stream",
new DefaultAWSCredentialsProviderChain(), UUID.randomUUID());


final IRecordProcessorFactory recordProcessorFactory = ...


final AmazonCloudWatch cloudWatchClient = AmazonCloudWatchClientBuilder
.standard()
.withRequestHandlers(new XRayTracingHandler("my-segment-listener"))
.build();

final AmazonKinesis kinesisClient = AmazonKinesisClientBuilder
.standard()
.withRequestHandlers(new XRayTracingHandler("my-segment-listener"))
.build();

final AmazonDynamoDB dynamoDBClient = AmazonDynamoDBClientBuilder
.standard()
.withRequestHandlers(new XRayTracingHandler("my-segment-listener"))
.build();

final Worker worker = new Worker.Builder()
.recordProcessorFactory(recordProcessorFactory)
.config(config)
.kinesisClient(kinesisClient)
.dynamoDBClient(dynamoDBClient)
.cloudWatchClient(cloudWatchClient)
.build();

关于amazon-kinesis - 如何将 Java Kinesis 客户端库与 X-Ray 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49280253/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com