Friday, March 25, 2011

How to listen JMS disconnection?

I refere this.
public class JmsContainer extends DefaultMessageListenerContainer {
 
    private static final Logger logger = Logger.getLogger(JmsContainer.class);

    public void start(){
        startAdvisoryListener();
        super.start();
    }
 
    private void startAdvisoryListener(){
        javax.jms.Connection connection;
        try {
            connection = getConnectionFactory().createConnection();
            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
            connection.start();
            Destination topic = session.createTopic("ActiveMQ.Advisory..>");
            MessageConsumer consumerAdvisory = session.createConsumer(topic);
            consumerAdvisory.setMessageListener(new MessageListener() {
                public void onMessage(Message message) {
                    if (message instanceof ActiveMQMessage) {
                        ActiveMQMessage activeMessage = (ActiveMQMessage) message;
                        Object command = activeMessage.getDataStructure();
                        if (command instanceof ConsumerInfo) {
                            logger.info("A consumer subscribed to a topic or queue: " + command);
                        } else if (command instanceof RemoveInfo) {
                            RemoveInfo removeInfo = (RemoveInfo) command;
                            if (removeInfo.isConsumerRemove()) {
                                logger.info("A consumer unsubscribed from a topic or queue");
                            } else {
                                logger.info("RemoveInfo, a connection was closed: " + command);
                            }
                        } else if (command instanceof ConnectionInfo) {
                            logger.info("ConnectionInfo, a new connection was made: " + command);
                        } else {
                            logger.info("Unknown command: " + command);
                        }
                    }
                }
            });
        } catch (JMSException e) {
            e.printStackTrace();
        }  
    }
}

No comments:

Post a Comment