DEV Community

Salad Lam
Salad Lam

Posted on

Project Reactor: Tips (1)

Don't know to use which operators

In Reactor 3 Reference Guide, there is some use case may to use directly.

To check if subscriber is attached

Nothing is printed after executed following statement.

Flux<Integer> f = Flux.just(1, 2, 3, 4).map(v -> {
    LOGGER.debug("value received in map(): {}", v);
    return v * v;
});
Enter fullscreen mode Exit fullscreen mode

Remember to attach a subscriber, or blocking function at the end of the operator chain, otherwise nothing happened. Following is the possible function

  • subscribe()
  • blockFirst() (blocking)
  • blockLast() (blocking)
  • toIterable() (blocking)
  • toStream() (blocking)

About time of class instantiation of just()

Flux<Integer> f = Flux.just(new Car("Mercedes-Benz"), new Car("Toyoto"));   // (1)
f.subscribe();  // (2)
Enter fullscreen mode Exit fullscreen mode

Class Car will be instantiated when executing (1). If want to defer the class instantiation on (2), please wrap just() by defer()/deferContextual().

Flux<Integer> f = Flux.defer(() -> Flux.just(new Car("Mercedes-Benz"), new Car("Toyoto")));   // (1)
f.subscribe();  // (2)
Enter fullscreen mode Exit fullscreen mode

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read more

Top comments (0)