JSR77 wants to provide a top down view of the JMS stats as shown in the attached pdf page showing the JMSStats interface model:
JMSStats -> JMSConnectionStats[] -> JMSSessionStats[] -> {JMSProduerStats[], JMSConsumerStats[], messageCount, pendingMessageCount, expiredMessageCount, messageWaitTime{min, max, total}, durableSubscriptionCount} JMSProduerStats -> {name, messageCount, pendingMessageCount, expiredMessageCount, messageWaitTime{min, max, total}} JMSConsumerStats -> {name, messageCount, pendingMessageCount, expiredMessageCount, messageWaitTime{min, max, total}} We don't seem to have a real good representation of a session on the server. I have looked at adding a basic connection/{producer/messageCount, consumer/messageCount} point using the JMSDestinationManager addMessage and receive methods using something like: public void addMessage(ConnectionToken dc, SpyMessage val, Tx txId) throws JMSException { JMSDestination queue = (JMSDestination)destinations.get(val.getJMSDestination()); ... // Update the client stats String destName = queue.getSpyDestination().getName(); ClientStats stats = (ClientStats) clientStats.get(dc); if( stats != null ) { stats.incProducerCount(destName); } } public SpyMessage receive(ConnectionToken dc, int subscriberId, long wait) throws JMSException { ClientConsumer clientConsumer = getClientConsumer(dc); SpyMessage msg = clientConsumer.receive(subscriberId, wait); JMSDestination queue = (JMSDestination)destinations.get(msg.getJMSDestination()); // Update the client stats String destName = queue.getSpyDestination().getName(); ClientStats stats = (ClientStats) clientStats.get(dc); if( stats != null ) { stats.incConsumerCount(destName); } return msg; } which might be ok for an initial cut but it leaves a lot of seemingly difficult to gather wait times. Any better ideas on how to provide more of this information? xxxxxxxxxxxxxxxxxxxxxxxx Scott Stark Chief Technology Officer JBoss Group, LLC xxxxxxxxxxxxxxxxxxxxxxxx
JMSStats.pdf
Description: Adobe PDF document