rxjava2带弹簧靴2

时间:2018-06-15 08:41:56

标签: rx-java2 spring-cloud-sleuth

我正在使用带有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中写了很多代码?

0 个答案:

没有答案