@Override public String getMessageSelector() throws JMSException { checkClosed(); return selector; }
@Override public void close() throws JMSException { connection.getThreadAwareContext().assertNotCompletionListenerThread(); connection.getThreadAwareContext().assertNotMessageListenerThread(); synchronized (connection) { try { for (ActiveMQMessageConsumer cons : new HashSet<>(consumers)) { cons.close(); } session.close(); connection.removeSession(this); } catch (ActiveMQException e) { throw JMSExceptionHelper.convertFromActiveMQException(e); } } topicCache.clear(); queueCache.clear(); }
@Override public Message receive() throws JMSException { return getMessage(0, false); }
ActiveMQMessageConsumer jbc = new ActiveMQMessageConsumer(options, connection, this, consumer, false, dest, selectorString, autoDeleteQueueName);
@Test public void testCloseJMSclient() throws Exception { ActiveMQServerControl serverControl = createManagementControl(); ConnectionFactory cf = ActiveMQJMSClient.createConnectionFactoryWithoutHA(JMSFactoryType.CF, new TransportConfiguration(INVM_CONNECTOR_FACTORY)); Connection conn = cf.createConnection(); conn.start(); Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); javax.jms.Topic topic = ActiveMQJMSClient.createTopic("ConsumerTestTopic"); MessageConsumer JMSclient = session.createConsumer(topic, "test1"); long clientID = -1; String sessionID = ((ClientSessionImpl)(((ActiveMQSession)session).getCoreSession())).getName(); Set<ServerSession> sessions = server.getSessions(); for (ServerSession sess : sessions) { if (sess.getName().equals(sessionID.toString())) { Set<ServerConsumer> serverConsumers = sess.getServerConsumers(); for (ServerConsumer serverConsumer : serverConsumers) { clientID = serverConsumer.sequentialID(); } } } Assert.assertFalse(((org.apache.activemq.artemis.jms.client.ActiveMQMessageConsumer)JMSclient).isClosed()); serverControl.closeConsumerWithID(sessionID, Long.toString(clientID)); Wait.waitFor(() -> ((org.apache.activemq.artemis.jms.client.ActiveMQMessageConsumer)JMSclient).isClosed()); Assert.assertTrue(((org.apache.activemq.artemis.jms.client.ActiveMQMessageConsumer)JMSclient).isClosed()); }
ActiveMQMessageConsumer jbc = new ActiveMQMessageConsumer(options, connection, this, consumer, noLocal, dest, selectorString, autoDeleteQueueName);
@Override public Queue getQueue() throws JMSException { checkClosed(); return (Queue) destination; }
@Override public Message receive(final long timeout) throws JMSException { return getMessage(timeout, false); }
ActiveMQMessageConsumer jbc = new ActiveMQMessageConsumer(options, connection, this, consumer, false, dest, selectorString, autoDeleteQueueName);
@Override public void close() throws JMSException { connection.getThreadAwareContext().assertNotCompletionListenerThread(); connection.getThreadAwareContext().assertNotMessageListenerThread(); synchronized (connection) { try { for (ActiveMQMessageConsumer cons : new HashSet<>(consumers)) { cons.close(); } session.close(); connection.removeSession(this); } catch (ActiveMQException e) { throw JMSExceptionHelper.convertFromActiveMQException(e); } } topicCache.clear(); queueCache.clear(); }
@Override public Topic getTopic() throws JMSException { checkClosed(); return (Topic) destination; }
@Override public Message receiveNoWait() throws JMSException { return getMessage(0, true); }
ActiveMQMessageConsumer jbc = new ActiveMQMessageConsumer(options, connection, this, consumer, false, dest, selectorString, autoDeleteQueueName);
@Override public void close() throws JMSException { connection.getThreadAwareContext().assertNotCompletionListenerThread(); connection.getThreadAwareContext().assertNotMessageListenerThread(); synchronized (connection) { try { for (ActiveMQMessageConsumer cons : new HashSet<>(consumers)) { cons.close(); } session.close(); connection.removeSession(this); } catch (ActiveMQException e) { throw JMSExceptionHelper.convertFromActiveMQException(e); } } topicCache.clear(); queueCache.clear(); }
@Override public MessageListener getMessageListener() throws JMSException { checkClosed(); return listener; }
@Override public Message receive() throws JMSException { return getMessage(0, false); }
ActiveMQMessageConsumer jbc = new ActiveMQMessageConsumer(options, connection, this, consumer, false, dest, selectorString, autoDeleteQueueName);
@Override public void close() throws JMSException { connection.getThreadAwareContext().assertNotCompletionListenerThread(); connection.getThreadAwareContext().assertNotMessageListenerThread(); synchronized (connection) { try { for (ActiveMQMessageConsumer cons : new HashSet<>(consumers)) { cons.close(); } session.close(); connection.removeSession(this); } catch (ActiveMQException e) { throw JMSExceptionHelper.convertFromActiveMQException(e); } } topicCache.clear(); queueCache.clear(); }
@Override public boolean getNoLocal() throws JMSException { checkClosed(); return noLocal; }
@Override public Message receive() throws JMSException { return getMessage(0, false); }