rx-java2 - rxjava2 与 Spring Boot 2
问题描述
我正在使用带有 spring boot 2 和 spring cloud finchley.rc2 的 rxjava 2。
现在我正在使用 sleuth / zipkin 跟踪请求。但是我遇到了一个问题,即 IO 线程正在重用 olds 请求 traceid。
当我这样做时,生成的 traceid 很好(对于同一请求中的所有并行调用都相同)
Observable<Optional<String>> data = client.getWorld().subscribeOn(Schedulers.newThread());
Observable<Optional<String>> data1 = client.getWorld1().subscribeOn(Schedulers.newThread());
Observable<Optional<String>> data2 = client.getWorld1().subscribeOn(Schedulers.newThread());
Observable<Optional<String>> data3 = client.getWorld().subscribeOn(Schedulers.newThread());
但是当我这样做时,它无法正常工作。我假设由于 io() 线程被重用,这就是为什么它们使用旧数据,因为它们是旧线程?但是我怎样才能强制他们使用当前主线程的跟踪 ID?
Observable<Optional<String>> data = client.getWorld().subscribeOn(Schedulers.io());
Observable<Optional<String>> data1 = client.getWorld1().subscribeOn(Schedulers.io());
Observable<Optional<String>> data2 = client.getWorld1().subscribeOn(Schedulers.io());
Observable<Optional<String>> data3 = client.getWorld().subscribeOn(Schedulers.io());
我怎样才能解决这个问题?我无法移动 webflux,因为我有很多用 rxjava 编写的代码?
解决方案
推荐阅读
- php - Laravel关于更新的独特规则忽略当前id不同型号同一张表
- kubernetes - 如何调试 K8s 中启动时卡住的服务?
- r - 向 ggplot2 自动绘图功能添加(或覆盖)填充美学
- html - 屏幕缩小时如何使图像缩小?
- html - React Fullcallendar v5 事件定位到光标问题 [更新]
- firebase - 无法将 Storage Firebase 映像正确链接到 Cloud Firestore
- python - 关于熊猫部分字符串合并的另一个问题
- c# - 如何解决“System.NullReferenceException:'对象引用未设置为对象的实例。'”
- linux - Bash:读取 CSV 文本文件并查找行的平均值
- sql-server - SQL CASE WHEN - 返回不需要的行的 NULL 值