代码之家  ›  专栏  ›  技术社区  ›  dvisco

AWS X射线与Java SQS JMS连接器

  •  6
  • dvisco  · 技术社区  · 7 年前

    我们最近开始在Spring项目中加入AWS X射线,并成功地利用了 AWSXRayServletFilter 用于创建 Segments

    现在,我们也开始添加AWS SDK Instrumentor来跟踪我们对AWS服务的使用情况。其中之一是SQS,我们使用它 amazon-sqs-java-messaging-lib

    TracingHandler 尝试创建 SubSegment 失败是因为没有 Segment

    如果一个段缺失或至少从父跟踪id中提取,我本以为会有上下文缺失策略可用于创建一个段,但我看不到它们最新的跟踪id中包含的信息 docs .

    1 回复  |  直到 7 年前
        1
  •  4
  •   Ruslan    7 年前

    这是官方论坛上讨论过的一个已知问题。这里有几个链接: https://forums.aws.amazon.com/thread.jspa?threadID=252012&tstart=0 https://forums.aws.amazon.com/thread.jspa?threadID=257258&tstart=25

    段信息保存在ThreadLocal中。如果在单独的线程中运行某个程序,则必须手动创建程序段,因此在创建子程序段时,您将拥有所需的ThreadLocal数据。SQS消息中没有什么特别之处,甚至SQS服务本身也与X射线服务相关。只有使用SQS客户端,X射线才能通过使用处理程序跟踪ThreadLocal数据来推断对SQS的调用。

    这是我的一个功能要求。看看这条线索,还有一个正式的答案,还有我在尝试自己实现这种上下文缺失策略时发现的当前限制。