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.

  1. service - Processor is used. The TPS is approx 200 TPS.

Function<Message<List>, Collection<Message<SafeStoreObject>> > receiveMessage()

The individual messages are placed in the destination topic/queue.

  1. service - Processor is used. The TPS is approx 2000 TPS.

Function<Message<List>, 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!

Adding more context posted by my colleague.

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

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.

Hello mpatel,

The solution worked. Thanks.