骆驼JMS Jaeger跟踪无法正常工作

时间:2019-12-11 17:24:47

标签: apache-camel jms jaeger

我正在使用Camel 2.24.1,jaeger-client 0.34,并且具有以下路线:

服务A:

from(“http:....”)
   .proces(...)
   .to(InOut, “jms:queue:a..”)
   .to(“validator:...”)
   .process(..)
   .end();

服务B:

from(“jms:queue:a...”)
   ...do some stuff and send response back (synchronously) to a response queue, so that Service A picks this up and continues with processing.

我希望在Jaeger中获得1条跟踪,从服务A开始,跨度为服务B。但是我得到的是两条跟踪。

当我调试代码,尤其是OpenTracingTracer(OTT)类时,看到的内容如下:

  • 在OTT中定义的用于侦听启动和停止的Exchange的路由策略永远不会被调用/到达。这就是为什么当请求到达服务B时,​​它不会检测到父跟踪并创建新的traceId。

  • 我已将路由策略中的确切逻辑添加到OTT的通告程序事件处理程序中,该事件处理程序侦听ExchangeSendingExchangeSent事件(因此也监听ExchangeStarted并完成)。现在发生的是,将JMS调用更早地发送到队列,然后ExchangeCompleted事件完成了。因此导致traceId在发送给服务B的JmsMessage中不存在。

我想问一下我是仅有的一个出现此问题的人,还是真正的错误?有人可以告诉我为什么未触发OTT中定义的路由策略吗?

0 个答案:

没有答案