我正在使用带有spring boot 2的rxjava 2和spring cloud finchley.rc2。
现在我用sleuth / zipkin跟踪请求。但我得到的一个问题是IO线程正在重用olds请求traceids。
当我这样做时,生成的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中写了很多代码?