首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否在Quarkus中为反应式路由启用OpenTracing?

是否在Quarkus中为反应式路由启用OpenTracing?
EN

Stack Overflow用户
提问于 2020-11-17 23:54:57
回答 2查看 374关注 0票数 0

我最近将我的Quarkus应用程序从RestEasy更改为Reactive Routes来实现我的HTTP端点。

我的Quarkus应用程序启用了OpenTracing,并且工作正常。更改HTTP资源层后,我在Jaeger中看不到任何跟踪。

在DEBUG中设置日志级别后,我可以看到我的应用程序已在积家中注册,但我在日志中没有看到任何traceId或spanId,也没有在积家中看到任何踪迹:

代码语言:javascript
运行
复制
15:44:36 DEBUG traceId=, spanId=, sampled= [io.qu.ja.ru.JaegerDeploymentRecorder] (main) Registering tracer to GlobalTracer JaegerTracer(version=Java-0.34.3, serviceName=employee, reporter=RemoteReporter(sender=HttpSender(), closeEnqueueTimeout=1000), sampler=ConstSampler(decision=true, tags={sampler.type=const, sampler.param=true}), tags={hostname=employee-8569585469-tg8wg, jaeger.version=Java-0.34.3, ip=10.244.0.21}, zipkinSharedRpcSpan=false, expandExceptionLogs=false, useTraceId128Bit=false)
15:45:03 INFO  traceId=, spanId=, sampled= [or.se.po.re.EmployeeResource] (vert.x-eventloop-thread-0) getEmployees

我使用的Quarkus的最新版本是1.9.2.Final。

当我使用反应式路由时,它是否启用了OpenTracing?

EN

Stack Overflow用户

回答已采纳

发布于 2021-02-18 18:11:01

是的,添加@Traced enable以激活反应式路由上的跟踪。

不幸的是,同时使用JAX-RS反应式和反应式路由会在JAX-RS反应式端点执行时对事件循环线程进行跟踪。

我两天前才开始使用Quarkus,所以我真的不知道这种行为的原因(无论是正常还是错误),但显然在两者之间切换完全搞乱了跟踪。

下面是一个简单的重现它的例子:

  • 创建一个REST Easy reactive端点,返回一个空的Multi
  • 创建自定义反应式路由
  • 将IO线程设置为2(更容易快速重现)
  • 运行应用程序,并交替请求两个端点

以下是显示该问题的屏幕截图

正如您所看到的,一旦JAX-RS资源生成并在两个可用线程中的一个线程上执行,它就会“破坏”它,从而扰乱跟踪_在反应式路由的下一次调用的日志上报告的id (我不知道是生成还是日志报告已损坏)。

这不会发生在JAX-RS资源上,正如您在屏幕截图上也可以注意到的那样。因此,它似乎只与反应路由有关。

这里的另一点是,在Jaeger上错误地报告了JAX-RS反应资源。(提到丢失的根跨度)不确定这是否与问题有关,但这也是另一个恼人的问题。

我正在考虑完全删除JAX-RS反应端点,并将其替换为正常的反应路由,以消除此bug。如果比我更有经验的人能证实这一点,或者告诉我我做错了什么,我将不胜感激:)

编辑1:我添加了一个优先级为500的路由过滤器来清除MDC,但bug仍然存在,所以肯定不是来自MDC。

编辑2:我打开了一个bug report论Quarkus

编辑3:它似乎与两种实现的工作方式有关(线程本地与基于参与者的上下文中的上下文传播),因此,除非JAX-RS反应资源被标记为@Blocking (并在单独的线程池中执行),否则JAX-RS反应和Vertx反应路由在跟踪时是不兼容的(但对于MDC相关信息也可能是相同的,因为MDC也是线程相关的)

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64878686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档