[spring-projects/spring-boot]为 Zipkin 添加基于 WebClient 的发送器

2024-06-26 371 views
9
PR 描述
  • 引入抽象HttpSender
  • 介绍ZipkinWebClientSender
  • ZipkinWebClientSender将bean添加到配置中

与 #30661 相关

回答

2

你好,我想知道这个 PR 是否有更新?谢谢。

6

目前还没有消息,@StefanBratanov。Moritz 休了几周陪产假,所以我们可能需要一点时间才能完成。3.0 直到 11 月才会正式发布,所以目前还不着急。

4

当然。不用担心。感谢您的快速更新。祝贺莫里茨。?

2

嘿,谢谢你的贡献。我回来了,对代码有一些评论。

3

欢迎回来!谢谢。我会看看的。

9

嗨,Moritz,抱歉回复晚了。我确实根据评论做了重构,我同意这些意见。我不确定如何处理WebClient异步调用,但现在我认为这样做有意义,也更简洁。我还将ZipkinRestTemplateSender异步实现更改为使用 a,CompletableFuture因为它之前是阻塞的。我还在两个实现中都添加了同步和异步的测试。

我不确定如何WebClient在 中初始化ZipkinConfigurations。我使用的ReactorClientHttpConnector是基于 的Netty,这样我就可以遵守 中设置的读取和连接超时ZipkinProperties。您认为初始化 的更好方法是什么WebClient?此外,我找不到类似于 的模拟服务器MockRestServiceServerWebClient因此保留了我的旧实现。如果有的话,我很乐意更改它。

1

感谢@StefanBratanov 所做的更改,PR 现在看起来相当不错!

不必感到难过 :)

我认为我们不需要这种CompletableFuture处理。zipkinUrlConnectionSender无需额外线程即可实现入队调用,因此无需引入多线程,应该可以正常工作。

我必须仔细检查是否真的没有办法在不直接将我们与实现联系起来的情况下设置超时。

是的,我错了,Spring Framework 中没有这样的支持。建议像你一样使用OkHttp MockServer 。

3

嗨@mhalbritter 感谢您的评论,我CompletableFuture用一个正常的实现替换了该实现。我会等你检查 WebClient 初始化。我的逻辑是,当为 true 时,@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.REACTIVE)应该ZipkinConfigurations意味着 Netty 应该在类路径上。但我可能是错的。

9

不幸的是,事实并非如此。你可以将其他服务器用于反应式应用程序

最好的选择是安装超时设置器WebClient.Builder,但不幸的是,它不可用,也不会被使用

我现在会在配置中删除超时代码,如果我们能找到适用于所有连接器实现的解决方案,我会向团队提出这个问题。

4

明白了。很有道理。很高兴知道!默认构建器将负责初始化适当的连接器。我删除了明确设置 Netty 连接器。

1

我已合并您的 PR。感谢您的工作,并祝贺您首次为 Spring Boot 做出贡献!

2

谢谢!很有趣。:) 期待未来能做更多。