Hi Roberto,
I think it would be worth looking at trying to improve the performance of the kafka connectors. I have found that the method signatures that process messages sequentially are pretty slow even when the processing is quick e.g.:-
@Incoming void method(I p)
@Incoming Uni<?> method(Message<I> msg)
@Outgoing @Incoming Uni<Message<O>> method(Message<I> msg)
I'm not sure what can be done as I don't know too much about the source/sink code but perhaps messages could be read/ack'ed in batch? Maybe ack'ing individually might still be needed.
Less important but also an issue is the performance of the emitters.
For low throughput services we have found the above method signatures and emitters work just fine but for high throughput we start needing to do things like:-
- Using a subscriber to request larger numbers of messages.
- Using multiple channels on the same topic e.g. @Incoming("mychannel-in-1), @Incoming("mychannel-in-2) etc
- Instead of using an emitter we use our own kafka producer
It feels a little like we need to twist the framework a bit to get the performance we need and I think this might hurt adoption as doing these above 3 things is not obvious (and maybe is not even the best thing to do).
Cheers,
Stuart