即使被指示,Spring Flux也不会​​重试

时间:2018-06-11 08:36:07

标签: spring spring-data-mongodb spring-cloud-stream project-reactor

我正在使用Spring Cloud Stream,我的应用程序的要点如下:

@StreamListener(MySink.SINK_NAME)
fun processEvents(events: Flux<Event>) {
        events.flatMap { event -> toEntities(event).toFlux() }
                .flatMap(myRepository::store)                   
                .doOnError { e -> log.error("Failed to store events", e) }
                .retry(3)
                .subscribe()
    }

其中MyRepository的定义如下:

interface MyRepository {
    fun store(entity: Entity): Mono<UpdateResult>
}

我正在尝试模拟失败,以便我可以确保重试实际工作,因此我创建了@MockBean MyRepository并配置模拟以首先抛出异常:< / p>

given(myRepositoryMock.store(any())).willThrow(IllegalArgumentException("expected"))
                                    .willReturn(Mono.just(UpdateResult.acknowledged(...)))

但我似乎无法触发重试行为。我看到异常确实已被捕获并记录:

java.lang.IllegalArgumentException: expected

我做错了什么?

0 个答案:

没有答案