如何使用 AWS X-Ray 通过 SQS 队列跟踪请求
2022-09-03 02:36:58
我正在尝试使用 AWS Lambda 函数启动并运行一个玩具示例,该函数由一个 SQS 队列上的消息触发,发布到另一个队列,然后一个工作线程读取并处理整个“请求”的消息,其中整个“请求”都使用 X-Ray 进行跟踪。f
sqs
sqs'
f'
sqs'
sqs -> f -> sqs' -> f'
目前,我已经准备好了队列,并且从队列中写入和接收函数。我还有X-Ray跟踪从第一个函数到sqs队列的请求。f
我目前的挑战是:如何将迹线传播到最终的工人,以便我可以在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;
}
}