Processor function consumes and publishes messages to solace in batch. Method signature is as below. It publishes each message in the batch as individual messages. TPS observed is around 150.
Function<Message<List<String>>, Collection<Message<POJO>>> receiveMessage()
Issue :
Batch publishing is very slow. For a batch size of 255, it takes more than a second to publish.
Observation :
If the method signature is updated as below then the entire batch is published as a single message, so down stream consumers cannot consume messages one by one. TPS observed is around 1000. There is a huge performance difference.
Function<Message<List<String>>, Collection<<POJO>>> receiveMessage()
Questions :
The service needs to handle around 2000 TPS (Multiple instances of same service). The service is very simple, just consume, perform minor transformation and publish. Please suggest config options to optimise publish. With batch publish are there any config to avoid acknowledge or round trip for each message?
Thanks
Issue resolved by setting property PUB_ACK_WINDOW_SIZE. Default publish window size was 1