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

我正在尝试使用 AWS Lambda 函数启动并运行一个玩具示例f,该函数由一个 SQS 队列上的消息触发sqs,发布到另一个队列sqs',然后一个工作人员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;

    }

}


红糖糍粑
浏览 213回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java