Increase Message Throughput with Multiple Listeners on ESB Service Instances - Wiki - Technology Partner - Progress Community

Increase Message Throughput with Multiple Listeners on ESB Service Instances

Increase Message Throughput with Multiple Listeners on ESB Service Instances

Overview

To achieve a higher message throughput, it is necessary to implement pooling of services. This allows multiple services to execute in parallel.



Recommendation

Use the ESB listener setting to achieve higher parallelism of ESB services. If you need to scale a service beyond a single machine, simply deploy another service container as an instance of the service. Sonic ESB will load balance at the queue level between the different ESB services, which also has the affect of achieving higher throughput.

Brought to you by Progress Professional Services

Comments
  • whether I can say that, setting the listener is equivalent to doing instance pooling.Suppose, I configure 10 listener to an instance. is it equivalent to creating a pool of 10 instance ?Is there any way we can configure instance pooling in sonic esb ?what is the difference between instance pooling and listeners to instance ?Thanks in advance.Habin

  • Setting listener count to greater than 1 is not equivalent to instance pooling in the strict sense of the term. In a running container there is only a single instance of the service, but it can be executed by multiple threads depending on the number of listeners configured.So to increase parallelism and throughput (in most cases) you could increase the listener count to a reasonable number so that multiple threads can be executing the same service. For services configured with an entry endpoint the ESB framework creates JMS listener threads equal to the listener count.Thanks-Mahesh

  • Thanks for the reply Mahesh.It would be great if you could provide some info on below points.1. If there is only one instance of the service and there are multiple threads,how synchronization is handled ?2. Can we implement the instance pooling in sonic ?Thanks,Habin

  • Hi Habin,ESB Services should be written such that they are stateless - similar to how you would write a servlet.If  for some reason you do need to use member variables and also require multiple listeners then you will have to  handle the synchronization on your own. This is not the best practice  and not encouraged, but will work if you handle the synchronization properly and ensure that it works in tandem with the lifecycle methods.Thanks-Mahesh