@Override
public Processor<Long, Long> createIdentityProcessor(int bufferSize) {
Flux<String> otherStream = Flux.just("test", "test2", "test3");
FluxProcessor<Long, Long> p =
WorkQueueProcessor.<Long>builder().name("fluxion-raw-fork").bufferSize(bufferSize).build();
cumulated.set(0);
cumulatedJoin.set(0);
BiFunction<Long, String, Long> combinator = (t1, t2) -> t1;
return FluxProcessor.wrap(p,
p.groupBy(k -> k % 2 == 0)
.flatMap(stream -> stream.scan((prev, next) -> next)
.map(integer -> -integer)
.filter(integer -> integer <= 0)
.map(integer -> -integer)
.bufferTimeout(1024, Duration.ofMillis(50))
.flatMap(Flux::fromIterable)
.doOnNext(array -> cumulated.getAndIncrement())
.flatMap(i -> Flux.zip(Flux.just(i),
otherStream,
combinator)))
.doOnNext(array -> cumulatedJoin.getAndIncrement())
.subscribeWith(TopicProcessor.<Long>builder().name("fluxion-raw-join").bufferSize(bufferSize).build())
.doOnError(Throwable::printStackTrace));
}