Note that there are some explanatory texts on larger screens.

plurals
  1. POHow to kill consumers in activemq
    primarykey
    data
    text
    <p>I am trying to get rid of all of the "Number of Consumers" in a certain queue. Whenever I purge/delete the queue, the number of consumers still remain if I ever create that queue with the same name again. Even with 0 pending messages, there are still 6 consumers.</p> <p>My problem may have stemmed in my java code while not closing the session or connection.</p> <p>I have tried both restarting and reinstalling the server.</p> <p>Here is my producer code:</p> <pre><code> private static String url = ActiveMQConnection.DEFAULT_BROKER_URL; public static String addElementToQueue(String queueName,String param1, String param2) throws JMSException, NamingException { // Getting JMS connection from the server and starting it ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url); Connection connection = connectionFactory.createConnection(); // JMS messages are sent and received using a Session. We will // create here a non-transactional session object. If you want // to use transactions you should set the first parameter to 'true' Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); // Destination represents here our queue on the // JMS server. You don't have to do anything special on the // server to create it, it will be created automatically. Destination destination = session.createQueue(queueName); // MessageProducer is used for sending messages (as opposed // to MessageConsumer which is used for receiving them) MessageProducer producer = session.createProducer(destination); String queueMessage = param1+ "-" + param2; TextMessage message = session.createTextMessage(queueMessage); // Here we are sending the message! producer.send(message); connection.close(); session.close(); // added after problem came up producer.close(); // added after problem came up return commandID; } </code></pre> <p>Here is my consumer code:</p> <pre><code> // URL of the JMS server private static String url = ActiveMQConnection.DEFAULT_BROKER_URL; public static Pair consumeNextElement(String queueName) throws JMSException { // Getting JMS connection from the server ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url); Connection connection = connectionFactory.createConnection(); connection.start(); // Creating session for seding messages Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); // Getting the queue Destination destination = session.createQueue(queueName); // MessageConsumer is used for receiving (consuming) messages MessageConsumer consumer = session.createConsumer(destination); // Here we receive the message. // By default this call is blocking, which means it will wait // for a message to arrive on the queue. Message message = consumer.receive(); // There are many types of Message and TextMessage // is just one of them. Producer sent us a TextMessage // so we must cast to it to get access to its .getText() // method. String[] parts = ((TextMessage)message).getText().split("-"); Pair retVal = new Pair(parts[0], parts[1]); connection.close(); session.close(); // added after problem came up consumer.close(); // added after problem came up return retVal; } </code></pre> <p>Any thoughts?</p> <p>Thanks.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload