我正在尝试跨不同的 Spring 微服务跟踪 PubSub 消息传递。我们在 GKE 上运行两个 Spring 微服务。服务 1 发布到 PubSub,服务 2 订阅同一主题。我们在我们的服务中使用 spring-cloud-gcp-trace 库进行跟踪。
我看到两种跟踪 PubSubMessages 的方法
第二个选项没有示例。使用选项 1,我看到了一些示例,其中我可以跟踪从发布者到订阅者的消息以及在客户端库中花费的时间。但对于选项 2,我不确定我们是否能够做到这一点。由于 spring-cloud-gcp-trace 使用 Brave 检测,而不一定使用 OpenTelemetry。发布者和订阅者 API 需要 OpenTelemetrySdk
问题是
谢谢
Pub/Sub Java 客户端的 OpenTelemetry 工具在
com.google.cloud.pubsub.v1.Publisher
和 com.google.cloud.pubsub.v1.Subscriber
类中实现,Pub/Sub Spring 客户端构建在这些类之上。它是与 TracePubSubAutoConfiguration
和 spring-cloud-gcp-trace
分开的实现,因此 OpenTelemetry 和 Brave 仪器可以同时使用。
由于 OpenTelemetry 工具是在较低级别实现的(实际的发布者和订阅者客户端类,而不是它们的包装器),因此它允许在 Pub/Sub 中更详细地跟踪消息,包括流控制、批处理和租赁管理。仅使用
spring-cloud-gcp-trace
Brave 仪器无法获得相同级别的细节。
为了为 Pub/Sub Spring 客户端启用 OpenTelemetry 检测,您需要实现一个自定义
PublisherFactory
,用所需的跟踪器、导出器等实例化 OpenTelemetry
实例。 Pub/Sub Java 客户端 可以用作此示例。