Spring Cloud Stream | Batch | TPS | Tuning
In our micro service, we are using solace binder with SCS, during non-functional testing we found some differences in performance, Could you please help to understand.
- service - Processor is used. The TPS is approx 200 TPS.
Function<Message<List<String>>, Collection<Message<SafeStoreObject>>
> receiveMessage()
The individual messages are placed in the destination topic/queue.
2. service - Processor is used. The TPS is approx 2000 TPS.
Function<Message<List<String>>, List<SafeStoreObject>
> receiveMessage()
Batch messages are combined as one List and placed in the topic/queue.
How to improve the TPS ? only the publishing part takes ample time.
Is it because the acknowledgement of each message is taking a lot of time ?
How to fine tune our service to achieve good TPS ? any property specific to reduce the ack time for the publisher?
Posting the question from another post as suggested to start as a new discussion!
Comments
-
Try by setting a PUB_ACK_WINDOW_SIZE property under the solace.java properties.
solace: java: host: tcp://localhost:55555 msg-vpn: default client-username: default client-password: default api-properties: PUB_ACK_WINDOW_SIZE: 255
You can find more about PUB_ACK_WINDOW_SIZE here
2 -
Hi @kirthi,
My guess is that the performance bottleneck is in the Cloud Stream framework itself as I believe it is what sees a collection of messages and then sends them to our binder to publish as individual messages. I imagine that this isn't a heavily used feature of the framework so maybe there are some easy options for performance improvements there. Have you opened an issue on the Spring Cloud Stream repository:?Striking this suggestion out as it looks like the issue was addressed.
0