dvi*_*sco 5 java amazon-sqs aws-xray
我们最近开始将AWS Xray添加到我们的Spring项目中,并成功地利用进行AWSXRayServletFilter了创建Segments以满足客户的需求。
现在,我们还开始添加AWS SDK Instrumentor以跟踪我们对AWS服务的使用。其中之一就是SQS,我们使用它amazon-sqs-java-messaging-lib来利用JMS接收SQS消息。这就是我们面临的麻烦。
每当我们的应用程序尝试获取消息时,TracingHandler尝试创建一个消息SubSegment都会失败,因为Segment尚未创建消息。我们如何将这些请求包装在中Segment?消息本身中是否不包含该信息,以将将消息推送到队列的资源中的段链接在一起?
我本来希望可以使用Context Missing策略创建一个Segment,如果它丢失了或者至少从父级跟踪ID中提取出来,但是我看不到其最新文档中包含的信息。
这是一个已知问题,已在官方论坛上讨论过。这里有几个链接: https://forums.aws.amazon.com/thread.jspa?threadID=252012&tstart=0 https://forums.aws.amazon.com/thread.jspa?threadID=257258&tstart=25
每次我们的应用程序尝试获取消息时,TracingHandler 都会尝试创建 SubSegment 并失败,因为尚未创建 Segment。我们如何将这些请求包装在一个Segment中?该信息是否不会包含在消息本身中,以将来自将消息推送到队列的资源的段链接在一起?
Segment 信息保存在 ThreadLocal 中。如果您在单独的线程中运行某些内容,则必须手动创建一个段,因此在创建子段时您将拥有所需的 ThreadLocal 数据。SQS 消息甚至与 X-Ray 服务相关的 SQS 服务本身都没有什么特别之处。仅使用 SQS 客户端,X-Ray 通过使用处理程序跟踪 ThreadLocal 数据来推断已发生对 SQS 的调用。
我本来期望上下文缺失策略可用于创建一个段(如果一个段丢失或至少从父跟踪 ID 中获取),但我没有看到其最新文档中包含的信息。
这是我的功能请求之一。请参阅该线程以及官方答案以及我在尝试自己实施此类上下文缺失策略时发现的当前限制。 https://forums.aws.amazon.com/thread.jspa?threadID=252012&tstart=0
| 归档时间: |
|
| 查看次数: |
481 次 |
| 最近记录: |