How can we get the queue counts faster from SwiftMQ CLI. Currently we are using SwiftMQ 9.2.0 and through CLI queue count takes about 2 mins for 500 queues.
What is the preferred way to get queue message counts faster preferably on the order of seconds.
There is no way to improve these calls as they are all synchronously and go through the Management Swiftlet. You could write a custom Swiftlet that travels through the counts and sends you the results in one go to a queue. There is an example called Event Swiftlet as part of the Swiftlet API.
You could also use the SNMP Swiftlet and integrate it with Nagios for monitoring.
Hi, I have the same requirement as well.
Queue depth monitoring is critical to our platform.
We are actually processing time sensitive messages.
so we have to keep an eye one the queue depth constantly.
currently we have written a software that query queue depth through CLI Admin API.
we connect all our routers to a "master router" via routing swiftlet
and connect our monitoring application to the "master router" and do the querying. ever minute.
however I do feel that its not fast enough, specially when there is high message traffic.
another draw back is that messages may be routed via the master router. we dont want that to happen.
Please do tell what is the better way of doing this?
This is too time expensive. Each CLI call is synchronous request/reply with the Management Swiftlet of the router where you need the value from. Just imagine what kind of overhead you generate here. SwiftMQ Explorer works different. It gets asynchronous updates from the routers where it is connected too.
I see that getting queue counts can also be done via JMX. http://www.swiftmq.com/products/router/admin/jmx/. Is this any faster? We too have the same problem of the time taken using CLI to get the queue counts and we use this information for monitoring of message counts in our queues.
You can try it but I doubt that JMX is faster as it creates a MBean for every entity of the management tree and you have to iterate through these MBeans via remote JMX access. The best solution is SNMP.