我有一个服务 A,它创建一封电子邮件并将其发送给客户。客户将收到电子邮件并最终单击正文中的链接以触发服务 B。
如何将属于同一业务流程的两个不同且完全隔离的服务与 sleuth 相关联?
我应该让跨度“打开”还是有办法以某种方式在电子邮件中“嵌入”跟踪 ID?
我有一个服务 A,它创建一封电子邮件并将其发送给客户。客户将收到电子邮件并最终单击正文中的链接以触发服务 B。
如何将属于同一业务流程的两个不同且完全隔离的服务与 sleuth 相关联?
我应该让跨度“打开”还是有办法以某种方式在电子邮件中“嵌入”跟踪 ID?
例如,您可以通过调用的跟踪表示(http ://cloud.spring .io/spring-cloud-sleuth/spring-cloud-sleuth.html#_executor_executorservice_and_scheduledexecutorservice)。您发出一个可完成的未来,它将在单独的线程中处理数据。在某些时候你阻塞,然后你可以检索数据。的跟踪表示将负责跟踪数据的传递。ExecutorService
TraceableExecutorService
ExecutorService
更新:但是,如果这些完全是两个独立的过程,那么我会关闭跨度并在有人单击链接时创建一个完全独立的跨度。你永远不应该让 span 显式打开。将绑定 2 个进程的将是跟踪 ID。从 UI 的角度来看,Zipkin 还没有以最好的方式支持这些长期存在的任务,但是正在进行一些工作来改进它(通过所谓的链接跨度)