Как проследить запрос через очередь SQS с помощью AWS X-Ray

Я пытаюсь получить пример игрушки и работать с функцией AWS Lambda, f, вызванной сообщением в одной очереди SQS, sqs, издает в другую очередь sqs', а затем рабочий, f' читает из sqs' и обрабатывает сообщение, в котором весь "запрос" прослеживается с помощью X-Ray.

sqs → f → sqs' → f'

В настоящее время у меня есть очереди и функции записи и получения из очереди. У меня также есть X-Ray, отслеживающий запрос от первой функции f к очереди sqs.

Моя текущая проблема заключается в следующем: как распространять трассировку для конечного работника, чтобы я мог видеть весь процесс в рентгеновском снимке.


Вот мои текущие функции:

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;
    }
}

Ответы