gpt4 book ai didi

java - 如何使用 AWS X-Ray 通过 SQS 队列跟踪请求

转载 作者:搜寻专家 更新时间:2023-10-30 21:34:40 25 4
gpt4 key购买 nike

我正在尝试使用 AWS Lambda 函数 f 启动并运行玩具示例,该函数由一个 SQS 队列 sqs 上的消息触发,发布到另一个队列 sqs',然后一个 worker,f'sqs' 读取并处理跟踪整个“请求”的消息用 X 射线。

sqs -> f -> sqs' -> f'

目前,我已准备好队列以及从队列写入和接收的函数。我还使用 X-Ray 跟踪从第一个函数 f 到 sqs 队列的请求。

我当前的挑战是:如何将跟踪传播到最终工作人员,以便我可以在 X 射线中看到整个过程。


这是我当前的功能:

public class Hello implements RequestHandler<SQSEvent, Void> {
String OUTPUT_QUEUE_URL = "...";

private AmazonSQS sqs = AmazonSQSClientBuilder.standard()
.withRequestHandlers(new TracingHandler(AWSXRay.getGlobalRecorder()))
.build();

public Void handleRequest(SQSEvent event, Context context)
{
for(SQSMessage msg : event.getRecords()){
System.out.println(new String(msg.getBody()));
}

SendMessageRequest send_msg_request = new SendMessageRequest()
.withQueueUrl(OUTPUT_QUEUE_URL)
.withMessageBody("hello world")
.withDelaySeconds(5);
sqs.sendMessage(send_msg_request);
return null;
}
}

public class World implements RequestHandler<SQSEvent, Void>{
public Void handleRequest(SQSEvent event, Context context)
{
for(SQSMessage msg : event.getRecords()){
System.out.println(new String(msg.getBody()));
}
return null;
}
}

最佳答案

即使 SQS 现在支持 X-Ray 追踪,它也不会将追踪传播到 lambda 函数。这就是为什么在 SQS->Lambda 设置中,Lambda 总是开始一个新的跟踪。 nodejs xray SDK 中存在问题 https://github.com/aws/aws-xray-sdk-node/issues/208

关于java - 如何使用 AWS X-Ray 通过 SQS 队列跟踪请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51954687/

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