public void destroy() { for (Iterator it = queues.entrySet().iterator(); it.hasNext(); ) { Map.Entry<String, Connection> entry = (Map.Entry<String, Connection>) it.next(); try { entry.getValue().close(); } catch (Exception e) { context.log("exception while closing connection: " + e.getMessage(), e); } } queues.clear(); connectionFactory = null; }
public synchronized void listen(String queueName) { Connection conn = queues.get(queueName); if (conn == null) { try { conn = connectionFactory.createConnection(); Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); Destination dest = (Destination) lookup(queueName); MessageConsumer consumer = session.createConsumer(dest); consumer.setMessageListener(new RubyObjectMessageListener(queueName)); queues.put(queueName, conn); conn.start(); } catch (Exception e) { context.log("Unable to listen to '" + queueName + "': " + e.getMessage(), e); } // } else { ... already listening on that queue } }