Spring Flux не повторяется, даже если указано это сделать - PullRequest
0 голосов
/ 11 июня 2018

Я использую 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 и сконфигурировал макет для первого выброса исключения:

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

Но я не могу вызвать поведение повтора.Я вижу, что исключение действительно перехвачено и зарегистрировано:

java.lang.IllegalArgumentException: expected

Что я делаю не так?

...