Single service instance, queued and persisted channel feature


The idea of this topic is discuss a bit more before opening a feature request.

I was thinking about queued services and according to this AMQP RCP topic it is only possible within an http channel.

I have a current http channel for this but I think it would be a nice feature to have a robust queued channel that persists it’s processing even after zato cluster restart.

To not complicate a lot, I was thinking about queue manager channels, like AMQP, JMS WebSphere MQ and ZeroMQ, to have an option “single instance consumer”, that indicates the service consuming that queue is only run once in the entire cluster. If the queue is empty, the service ends. If a new message arrives, service is started but not other instance is allowed to run.

Another idea should be, instead of a boolean, add an integer representing “maximum number of service instances”, so you can use 1 to run as the case above, any other number to throttle it according to your scenario needs, or “0” for “unlimited”.

And having the queue_depth visible and an option to hot-change this limit would be a killing feature, imho… :slight_smile:

What do you think about?