activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sachindra Nath <Sachindra.N...@efi.com>
Subject RE: Exception occurred: javax.jms.IllegalStateException: Cannot synchronously receive a message when a MessageListener is set
Date Thu, 24 Jul 2008 09:10:52 GMT
You will need to start the connection for receiving messages. After setting
up your receiver, call connection.start();

consumer = session.createConsumer(destination);
connection.start();
Message message1 = consumer.receive(1000);

Read the jms api/a good book.

I believe activemq is supposed to be logging warning messages for these
cases, which I donot see in your logs. Which version are you working with?

Apart from that, I see a lot of errors in your error logs....that are related
to port in use issues (for port 1099). Correct them...

-----Original Message-----
From: skg [mailto:saurabh_garg05@infosys.com] 
Sent: Thursday, July 24, 2008 2:32 PM
To: users@activemq.apache.org
Subject: Re: Exception occurred: javax.jms.IllegalStateException: Cannot
synchronously receive a message when a MessageListener is set


Hi,
i made the changes u have mentioned but i am not receiving any message. I am
putting the output of the console for the producer and the consumer as well.

Producer console window
rrrrrrr
Jul 24, 2008 2:27:38 PM SimpleProducer main
INFO: Destination name is MyQueue
Jul 24, 2008 2:27:39 PM org.apache.activemq.broker.BrokerService start
INFO: Using Persistence Adapter:
AMQPersistenceAdapter(activemq-data\localhost)
Jul 24, 2008 2:27:39 PM org.apache.activemq.broker.BrokerService getBroker
INFO: ActiveMQ null JMS Message Broker (localhost) is starting
Jul 24, 2008 2:27:39 PM org.apache.activemq.broker.BrokerService getBroker
INFO: For help or more information please see: http://activemq.apache.org/
Jul 24, 2008 2:27:39 PM org.apache.activemq.broker.jmx.ManagementContext$1
run
WARNING: Failed to start jmx connector: Cannot bind to URL
[rmi://localhost:1099/jmxrmi]: javax.naming.CommunicationException [Root
exception is java.rmi.ConnectIOException: error during JRMP connection
establishment; nested exception is: 
	java.net.SocketException: Software caused connection abort: recv
failed]
Jul 24, 2008 2:27:39 PM org.apache.activemq.store.amq.AMQPersistenceAdapter
start
INFO: AMQStore starting using directory: activemq-data\localhost
Jul 24, 2008 2:27:39 PM org.apache.activemq.kaha.impl.KahaStore initialize
INFO: Kaha Store using data directory activemq-data\localhost\kr-store\state
Jul 24, 2008 2:27:39 PM org.apache.activemq.store.amq.AMQPersistenceAdapter
start
INFO: Active data files: [1]
Jul 24, 2008 2:27:39 PM org.apache.activemq.kaha.impl.KahaStore initialize
INFO: Kaha Store using data directory activemq-data\localhost\kr-store\data
Jul 24, 2008 2:27:39 PM org.apache.activemq.broker.BrokerService start
INFO: ActiveMQ JMS Message Broker (localhost,
ID:blrkec41498d-3757-1216889859509-0:0) started
Jul 24, 2008 2:27:39 PM org.apache.activemq.broker.TransportConnector start
INFO: Connector vm://localhost Started
Jul 24, 2008 2:27:40 PM SimpleProducer main
INFO: Sending message: This is message 1
after the senderJul 24, 2008 2:27:40 PM
org.apache.activemq.broker.TransportConnector stop
INFO: Connector vm://localhost Stopped
Jul 24, 2008 2:27:40 PM org.apache.activemq.broker.BrokerService stop
INFO: ActiveMQ Message Broker (localhost,
ID:blrkec41498d-3757-1216889859509-0:0) is shutting down
Jul 24, 2008 2:27:40 PM org.apache.activemq.broker.BrokerService stop
INFO: ActiveMQ JMS Message Broker (localhost,
ID:blrkec41498d-3757-1216889859509-0:0) stopped

The consumer console window

Jul 24, 2008 2:30:23 PM org.apache.activemq.broker.BrokerService start
INFO: Using Persistence Adapter:
AMQPersistenceAdapter(activemq-data\localhost)
Jul 24, 2008 2:30:23 PM org.apache.activemq.broker.BrokerService getBroker
INFO: ActiveMQ null JMS Message Broker (localhost) is starting
Jul 24, 2008 2:30:23 PM org.apache.activemq.broker.BrokerService getBroker
INFO: For help or more information please see: http://activemq.apache.org/
Jul 24, 2008 2:30:23 PM org.apache.activemq.store.amq.AMQPersistenceAdapter
start
INFO: AMQStore starting using directory: activemq-data\localhost
Jul 24, 2008 2:30:23 PM org.apache.activemq.broker.jmx.ManagementContext$1
run
WARNING: Failed to start jmx connector: Cannot bind to URL
[rmi://localhost:1099/jmxrmi]: javax.naming.CommunicationException [Root
exception is java.rmi.ConnectIOException: error during JRMP connection
establishment; nested exception is: 
	java.net.SocketException: Software caused connection abort: recv
failed]
Jul 24, 2008 2:30:23 PM org.apache.activemq.kaha.impl.KahaStore initialize
INFO: Kaha Store using data directory activemq-data\localhost\kr-store\state
Jul 24, 2008 2:30:23 PM org.apache.activemq.store.amq.AMQPersistenceAdapter
start
INFO: Active data files: [1]
Jul 24, 2008 2:30:23 PM org.apache.activemq.kaha.impl.KahaStore initialize
INFO: Kaha Store using data directory activemq-data\localhost\kr-store\data
Jul 24, 2008 2:30:23 PM org.apache.activemq.broker.BrokerService start
INFO: ActiveMQ JMS Message Broker (localhost,
ID:blrkec41498d-3764-1216890023650-0:0) started
Jul 24, 2008 2:30:24 PM org.apache.activemq.broker.TransportConnector start
INFO: Connector vm://localhost Started
Jul 24, 2008 2:30:24 PM org.apache.activemq.broker.TransportConnector stop
INFO: Connector vm://localhost Stopped
Jul 24, 2008 2:30:24 PM org.apache.activemq.broker.BrokerService stop
INFO: ActiveMQ Message Broker (localhost,
ID:blrkec41498d-3764-1216890023650-0:0) is shutting down
Jul 24, 2008 2:30:24 PM org.apache.activemq.broker.BrokerService stop
INFO: ActiveMQ JMS Message Broker (localhost,
ID:blrkec41498d-3764-1216890023650-0:0) stopped

Can u help me .

skg wrote:
> 
> Hi,
> I worked on a simple java programm which acts as the producer and the
> consumer as well.Now i a want to do it with two seperate java programm,
> one acting as the consumer and the other one as producer.
> While executing the consumer programm i am getting this exception.
> Exception occurred: javax.jms.IllegalStateException: Cannot synchronously
> receive a message when a MessageListener is set
>  I am using Eclipse as development tool. I have attached the code for the
> producer and consumer as well.
> 
> The producer
> import javax.jms.Connection;
> import javax.jms.ConnectionFactory;
> import javax.jms.Destination;
> import javax.jms.JMSException;
> import javax.jms.Message;
> import javax.jms.MessageConsumer;
> import javax.jms.MessageProducer;
> import javax.jms.Session;
> import javax.jms.TextMessage;
> import javax.naming.Context;
> import javax.naming.InitialContext;
> import javax.naming.NamingException;
> 
> import org.apache.commons.logging.Log;
> import org.apache.commons.logging.LogFactory;
> 
> public class SimpleProducer {
> 	private static final Log LOG =
LogFactory.getLog(SimpleProducer.class);
> 
>     private SimpleProducer() {
>     }
> 
>     /**
>      * @param args the destination name to send to and optionally, the
> number of
>      *                messages to send
>      * @throws InterruptedException 
>      */
>     public static void main(String[] args) throws InterruptedException {
>     	System.out.println("rrrrrrr");
>         Context jndiContext = null;
>         ConnectionFactory connectionFactory = null;
>         Connection connection = null;
>         Session session = null;
>         Destination destination = null;
>         MessageProducer producer = null;
>         String destinationName = null;
>         final int numMsgs;
> 
>        /* if ((args.length < 1) || (args.length > 2)) {
>             LOG.info("Usage: java SimpleProducer <destination-name>
> [<number-of-messages>]");
>             System.exit(1);
>         }*/
>         destinationName = "MyQueue";
>         LOG.info("Destination name is " + destinationName);
>         if (args.length == 2) {
>             numMsgs = (new Integer(args[1])).intValue();
>         } else {
>             numMsgs = 1;
>         }
> 
>         /*
>          * Create a JNDI API InitialContext object
>          */
>         try {
>             jndiContext = new InitialContext();
>         } catch (NamingException e) {
>             LOG.info("Could not create JNDI API context: " +
> e.toString());
>             System.exit(1);
>         }
> 
>         /*
>          * Look up connection factory and destination.
>          */
>         try {
>             connectionFactory =
> (ConnectionFactory)jndiContext.lookup("ConnectionFactory");
>             destination =
> (Destination)jndiContext.lookup(destinationName);
>         } catch (NamingException e) {
>             LOG.info("JNDI API lookup failed: " + e);
>             System.exit(1);
>         }
> 
>         /*
>          * Create connection. Create session from connection; false means
>          * session is not transacted. Create sender and text message. Send
>          * messages, varying text slightly. Send end-of-messages message.
>          * Finally, close connection.
>          */
>         try {
>             connection = connectionFactory.createConnection();
>             session = connection.createSession(false,
> Session.AUTO_ACKNOWLEDGE);
>             producer = session.createProducer(destination);
>             TextMessage message = session.createTextMessage();
>             for (int i = 0; i < numMsgs; i++) {
>                 message.setText("This is message " + (i + 1));
>                 LOG.info("Sending message: " + message.getText());
>                 producer.send(message);
>             }
> 
>             /*
>              * Send a non-text control message indicating end of messages.
>              */
>             producer.send(session.createMessage());
>             System.out.println("after the sender");
>             Thread.sleep(10000);
> 
>             /*MessageConsumer consumer = null;
>             consumer = session.createConsumer(destination);
>             Message message1 = consumer.receive(1000);
>             TextMessage txtMsg = (TextMessage)message;
>             String msg = txtMsg.getText();
>             System.out.println("Receiving"+msg);*/
>         } catch (JMSException e) {
>             LOG.info("Exception occurred: " + e);
>         } finally {
>             if (connection != null) {
>                 try {
>                    connection.close();
>                 } catch (JMSException e) {
>                 }
>             }
>         }
>     }
> 
> }
> 
> The Consumer 
> 
> import javax.jms.Connection;
> import javax.jms.ConnectionFactory;
> import javax.jms.Destination;
> import javax.jms.JMSException;
> import javax.jms.Message;
> import javax.jms.MessageConsumer;
> import javax.jms.MessageListener;
> import javax.jms.MessageProducer;
> import javax.jms.Session;
> import javax.jms.TextMessage;
> import javax.naming.Context;
> import javax.naming.InitialContext;
> import javax.naming.NamingException;
> 
> import org.apache.commons.logging.Log;
> import org.apache.commons.logging.LogFactory;
> 
> public class Consumer implements MessageListener{
> 	private static final Log LOG = LogFactory.getLog(Consumer.class);
> 	Context jndiContext = null;
>     ConnectionFactory connectionFactory = null;
>     Connection connection = null;
>     Session session = null;
>     Destination destination = null,destination1;
>     MessageProducer producer = null;
>     String destinationName = null;
>    // final int numMsgs;
>     MessageConsumer consumer = null;
> 	    public static void main(String[] args) {
> 	    	System.out.println("rrrrrrr");
> 	         Consumer c=new Consumer();
> 	        c.run();
> 	    }
> 	     public void run()
> 	     {
> 	      destinationName = "MyQueue";
> 	        try {
> 	            jndiContext = new InitialContext();
> 	        } catch (NamingException e) {
> 	            LOG.info("Could not create JNDI API context: " +
> e.toString());
> 	            System.exit(1);
> 	        }
> 
> 	        /*
> 	         * Look up connection factory and destination.
> 	         */
> 	        try {
> 	            connectionFactory =
> (ConnectionFactory)jndiContext.lookup("ConnectionFactory");
> 	            //destination =
> (Destination)jndiContext.lookup(destinationName);
> 	        } catch (NamingException e) {
> 	            LOG.info("JNDI API lookup failed: " + e);
> 	            System.exit(1);
> 	        }
> 	        try {
> 	            connection = connectionFactory.createConnection();
> 	            session = connection.createSession(false,
> Session.AUTO_ACKNOWLEDGE);
> 	            destination= session.createQueue("example.MyQueue");
> 	            
> 	            consumer = session.createConsumer(destination);
> 	            consumer.setMessageListener(this);
> 	            Message message1 = consumer.receive(1000);
> 	            TextMessage txtMsg = (TextMessage)message1;
> 	            String msg = txtMsg.getText();
> 	            System.out.println("Receiving"+msg);
> 	        } catch (JMSException e) {
> 	            LOG.info("Exception occurred: " + e);
> 	        } finally {
> 	            if (connection != null) {
> 	                try {
> 	                    connection.close();
> 	                } catch (JMSException e) {
> 	                }
> 	            }
> 	        }
> 	    }
> 
> 		public void onMessage(Message message1) {
> 			// TODO Auto-generated method stub
> 			try
> 			{
> 		    message1 = consumer.receive(1000);
>             TextMessage txtMsg = (TextMessage)message1;
>             String msg = txtMsg.getText();
>             System.out.println("Receiving"+msg);
> 			}catch (JMSException e) {
>             }
> 		}
> 
> 	}
> 
> 
> Can u please tell me why i am getting this error.If i embedd both producer
> and consumer it works file but in different files i am getting problems.
> 

-- 
View this message in context:
http://www.nabble.com/Exception-occurred%3A-javax.jms.IllegalStateException%3
A-Cannot-synchronously-receive-a-message-when-a-MessageListener-is-set-tp1862
7640p18627931.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


Mime
View raw message