提问人:astar 提问时间:10/31/2023 更新时间:10/31/2023 访问量:29
Webclient returing null
Webclient returing null
问:
我有 2 个 SpringCloudStream 应用程序,它们是 Kafka 上的生产者和消费者。Kafka Consumer 应用程序接收消息,调用 DB 和 Webclient 以接收一些信息并返回更新的对象。在下面面向使用者的代码中,WebClient 调用不会更新对象并为字段返回 null,但 DB 调用可以正常。 该服务本身运行良好。 请建议我在这里缺少什么。
@Service
public class BookService {
@Autowired
private BookRepository bookRepository;
@Autowired
private WebClient webClient;
public Book updateBook(Book book) {
book.setBookName(book.getBookName().toUpperCase());
bookRepository.findById(book.getId()).ifPresent(book1 -> {
book.setBookIsbn(book1.getBookIsbn()); //getting set
});
webClient
.method(HttpMethod.GET)
.uri("http://localhost:9898/rx/getBookDetails/" + book.getId())
.contentType(MediaType.APPLICATION_JSON)
.accept(MediaType.ALL)
.retrieve()
.onStatus(HttpStatus::isError, response -> Mono.error(new RuntimeException("Exception :: " + response)))
.bodyToMono(Book.class)
.retryWhen(Retry.backoff(3, Duration.ofSeconds(1)))
.onErrorResume(error -> Mono.just(new Book()))
.map(book1 -> {
book.setAuthorId(book1.getAuthorId()); //authorId = null
return book;
});
System.out.println("Book processed successfully...");
return book;
}
}
答: 暂无答案
评论
Mono
.onErrorResume(error -> Mono.just(new Book()))
Book
WebClient
是被动的,你只定义一个事件流,你实际上并没有订阅它,因此它什么都不做。webClient