English 中文(简体)
Reactive Java: change window size at runtime
原标题:

I have a Flux emitting items every 1 seconds, on repeat. How can I change the window size dynamically?

public static void main(String[] args) throws InterruptedException {
    Duration interval = Duration.ofSeconds(1);

    Flux<String> flux = Flux.just("A", "B", "C", "D", "E", "F", "G", "H", "I", "J");
    flux
            .repeat()
            // on each emit from the publisher,
            // a batch of a dynamic size is read
            // could be just 1 item, 3 items, or even more
            .window(calcWindowSize()))
            .concatMap(Flux::collectList)
            // since we only emit every 1 second
            // the window size changes over time
            .delayElements(interval)
            .doOnNext(batch -> {
                log.info("Processed batch: " + batch + " at " + System.currentTimeMillis());
            })
            .subscribe();

    Thread.sleep(10_000);
}

private static int calcWindowSize() {
    // this calculation is a little more complex in reality
    // so let s just use some random int here
    return RandomUtils.nextInt(1, 10);
}

The code above is NOT working but hopefully illustrates what I want to achieve. I tried using windowWhen but don t understand its syntax. If I cannot dynamically change the window size, can I recreate the Flux maybe and continue from where I left on the second before?

问题回答

暂无回答




相关问题
Spring Properties File

Hi have this j2ee web application developed using spring framework. I have a problem with rendering mnessages in nihongo characters from the properties file. I tried converting the file to ascii using ...

Logging a global ID in multiple components

I have a system which contains multiple applications connected together using JMS and Spring Integration. Messages get sent along a chain of applications. [App A] -> [App B] -> [App C] We set a ...

Java Library Size

If I m given two Java Libraries in Jar format, 1 having no bells and whistles, and the other having lots of them that will mostly go unused.... my question is: How will the larger, mostly unused ...

How to get the Array Class for a given Class in Java?

I have a Class variable that holds a certain type and I need to get a variable that holds the corresponding array class. The best I could come up with is this: Class arrayOfFooClass = java.lang....

SQLite , Derby vs file system

I m working on a Java desktop application that reads and writes from/to different files. I think a better solution would be to replace the file system by a SQLite database. How hard is it to migrate ...

热门标签