Jus*_*ell 13 java amazon-sqs amazon-web-services aws-lambda
我正在尝试通过AWS Lambda函数启动并运行一个玩具示例f,该函数由一个SQS队列上的消息触发,然后sqs发布到另一个队列sqs',然后由一个工作程序f'读取sqs'并处理该消息,其中整个“ X射线追踪“请求”。
sqs -> f -> sqs' -> f'
目前,我已经准备好队列,并从队列中写入和接收函数。我也有X射线跟踪从第一个函数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;
}
}
Run Code Online (Sandbox Code Playgroud)
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;
}
}
Run Code Online (Sandbox Code Playgroud)
小智 6
尽管 SQS 现在支持 X 射线跟踪,但它不会将跟踪传播到 lambda 函数。这就是为什么通过 SQS->Lambda 设置,Lambda 总是启动新的跟踪。Nodejs Xray SDK 中存在一个问题https://github.com/aws/aws-xray-sdk-node/issues/208
截至今天,AWS X-Ray 现已原生支持 Amazon SQS: https://aws.amazon.com/about-aws/whats-new/2019/08/aws-x-ray-now-supports-amazon-平方尺/
| 归档时间: |
|
| 查看次数: |
775 次 |
| 最近记录: |