The JMS  documentation suggests that we start the connection after
creating the receiver and registering it with a message listener. Please
look at point no: 6 in the section "Client to Consume Messages"
http://java.sun.com/developer/technicalArticles/Ecommerce/jms/index.html
 

-----Original Message-----
From: Dave Carlson [mailto:[EMAIL PROTECTED] 
Sent: Friday, August 17, 2007 7:58 AM
To: users@activemq.apache.org
Cc: Suchitha Koneru (sukoneru)
Subject: RE: Error on starting QueueConnection

Are you sure about the ordering? It seems odd that you would want to
start the flow of messages across the connection before you have created
a receiver. Looking at ActiveMQ example code in ConsumerTool, they are
creating the receiver first...

                        ActiveMQConnectionFactory connectionFactory =
new ActiveMQConnectionFactory(user, password, url);
                        Connection connection =
connectionFactory.createConnection();
                        if (durable && clientId != null &&
clientId.length()>0 && !"null".equals(clientId) ) {
                                connection.setClientID(clientId);
                        }
                        connection.setExceptionListener(this);
                        connection.start();

                        session = connection.createSession(transacted,
ackMode);
                        if (topic) {
                                destination =
session.createTopic(subject);
                        } else {
                                destination =
session.createQueue(subject);
                        }

                        replyProducer = session.createProducer(null);
        
replyProducer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);

                        MessageConsumer consumer = null;
                        if (durable && topic) {
                                consumer =
session.createDurableSubscriber((Topic) destination, consumerName);
                        } else {
                                consumer =
session.createConsumer(destination);
                        }

---- "Suchitha Koneru (sukoneru)" <[EMAIL PROTECTED]> wrote: 
> Start the queue connection after creating the receiver .  Change the 
> order and see. It is always recommended that the connection is started

> after creating the receiver . The following should be the order. Give 
> it a try.
> 
>   ActiveMQQueueReceiver aqr =
>  (ActiveMQQueueReceiver)qs.createReceiver(q) ; 
>                 aqr.setMessageListener(new
>  BatchReceiverTechnicalService()) ;
>   aqc.start() ;
> 
> Also I noticed that in the jndi resource for jms/Connectionfactory  
> you are not using max.Inactivity flag for the broker url.
> But while adding connector to the broker you are using this flag, 
> please use the same broker url through out for consistency.
> 
> 
> -----Original Message-----
> From: denez [mailto:[EMAIL PROTECTED]
> Sent: Thursday, August 16, 2007 7:03 AM
> To: users@activemq.apache.org
> Subject: Re: Error on starting QueueConnection
> 
> 
> Do you already have this type of error ?
> Do i forget something in my configuration.
> I use :
> apache-activemq-4.1.1.jar
> Tomcat 5.5.23
> jdk1.5.0_07
> 
> Could you tell me if something is wrong !
> Here is my context declaration in Tomcat :
> 
> <Context path="/jms" reloadable="true" docBase="C:\myJMSApp"
> workDir="C:\myJMSApp\work" >
>       <Resource
>               name="jms/ConnectionFactory"
>               auth="Container"
>               type="org.apache.activemq.ActiveMQConnectionFactory"
>               description="JMS Connection Factory"
>               factory="org.apache.activemq.jndi.JNDIReferenceFactory"
>               brokerURL="tcp://localhost:61616"
>               brokerName="LocalActiveMQBroker"
>               useEmbeddedBroker="true"/>
> 
>       <Resource name="jms/batch"
>               auth="Container"
>               type="org.apache.activemq.command.ActiveMQQueue"
>               factory="org.apache.activemq.jndi.JNDIReferenceFactory"
>               physicalName="batch"/>
> </Context>
> 
> Thanks in advance for all reply, help / answer.
> Regards,
> 
> Denez
> 
> 
> denez wrote:
> > 
> > Hi all,
> > 
> > I got the same error trying to create a sender !
> > A very strange thing appear because there is no exception throw ! 
> > Just
> 
> > nothing happened and the rest of my code is never (i suspect)
> excecuted.
> > 
> > Could you help me, or ask me if something is not clear.
> > Thanks in advance,
> > Regards,
> > 
> > Denez
> > 
> > 
> > denez wrote:
> >> 
> >> I search around to find my error and find that you should use 
> >> ActiveMQConnection.
> >> Now i can start the connection but have a same problem will trying 
> >> to
> 
> >> createReceiver.
> >> See the code below (previous + modification) :
> >> 
> >> public class ActiveMQBrokerStartListener implements 
> >> ServletContextListener {
> >>    
> >>      BrokerService broker = new BrokerService();
> >>      ActiveMQConnection aqc = null ;
> >>    
> >>      public void contextInitialized(ServletContextEvent arg0) {
> >>         try{
> >>               
> >>
> broker.addConnector("tcp://localhost:61616?trace=true&wireFormat.maxIn
> ac
> tivityDuration=-1");
> >>                broker.start();
> >>                InitialContext ic = new InitialContext();
> >>                Context ctx = (Context) ic.lookup("java:comp/env");
> >>                ActiveMQConnectionFactory acf =
> >>                    
> >> (ActiveMQConnectionFactory)ctx.lookup("jms/ConnectionFactory");
> >>                aqc =
(ActiveMQConnection)acf.createQueueConnection();
> >>                aqc.start() ;
> >>                ActiveMQQueueSession qs =
> >>                     
> >> (ActiveMQQueueSession)aqc.createQueueSession(false,
> >> Session.CLIENT_ACKNOWLEDGE) ;
> >>                ActiveMQQueue q =
> (ActiveMQQueue)ctx.lookup("jms/batch");
> >>                ActiveMQQueueReceiver aqr =
> >> (ActiveMQQueueReceiver)qs.createReceiver(q) ; // ERROR LINE
> >>                aqr.setMessageListener(new
> >> BatchReceiverTechnicalService()) ;
> >>         }catch(Exception e){
> >>                System.err.println(e.getMessage());
> >>                e.printStackTrace();
> >>                throw new RuntimeException(e);
> >>         }
> >>      }
> >> 
> >>      public void contextDestroyed(ServletContextEvent arg0) {
> >>                try{
> >>                               aqc.close() ;
> >>                               //qc.close() ;
> >>                               broker.stop();
> >>                }catch(Exception e){
> >>                               System.err.println(e.getMessage());
> >>                               e.printStackTrace();
> >>                               throw new RuntimeException(e);
> >>                }
> >>      }
> >> }
> >> 
> >> What is wrong ??
> >> Why i can not create a Receiver ?
> >> 
> >> Thanks in advance
> >> Regards,
> >> Denez
> >> 
> >> 
> >> 
> >> 
> >> denez wrote:
> >>> 
> >>> Hi all,
> >>> 
> >>> I would like to start a broker and Activate a MessageListener on 
> >>> startup of my webApp.
> >>> I made all the needed configuration to have a
> ServletContextListener.
> >>> I can debug inside my ServletContextListener implementation named
:
> >>> ActiveMQBrokerStartListener.
> >>> You can see the code of it below :
> >>> 
> >>> public class ActiveMQBrokerStartListener implements 
> >>> ServletContextListener {
> >>>      BrokerService broker = new BrokerService();
> >>>      QueueConnection qc = null ;
> >>>   
> >>>      public void contextInitialized(ServletContextEvent arg0) {
> >>>         try{
> >>>                 
> >>>
> broker.addConnector("tcp://localhost:61616?trace=true&wireFormat.maxIn
> ac
> tivityDuration=-1");
> >>>                broker.start();
> >>>                InitialContext ic = new InitialContext();
> >>>                Context ctx = (Context) ic.lookup("java:comp/env");
> >>>                ActiveMQConnectionFactory cf =
> >>>                            
> >>> ActiveMQConnectionFactory)ctx.lookup("jms/ConnectionFactory");
> >>>                qc = (QueueConnection) cf.createQueueConnection();
> >>>                qc.start() ;
> >>>                QueueSession qs = qc.createQueueSession(false,
> >>> Session.CLIENT_ACKNOWLEDGE) ;
> >>>                Queue q = (Queue)ctx.lookup("jms/batch");
> >>>                QueueReceiver qr = qs.createReceiver(q) ;
> >>>                qr.setMessageListener(new Receiver()) ;
> >>>         }catch(Exception e){
> >>>                System.err.println(e.getMessage());
> >>>                e.printStackTrace();
> >>>                throw new RuntimeException(e);
> >>>         }
> >>>      }
> >>> 
> >>>      public void contextDestroyed(ServletContextEvent arg0) {
> >>>         try{
> >>>                qc.close() ;
> >>>                broker.stop();
> >>>         }catch(Exception e){
> >>>                System.err.println(e.getMessage());
> >>>                e.printStackTrace();
> >>>                throw new RuntimeException(e);
> >>>         }
> >>>      }
> >>> }
> >>> 
> >>> I place a breakpoint on the line that should create a
QueueSession.
> >>> But never enter in it. If i place a breakpoint on the ligne that 
> >>> createQueueConnection i have it.
> >>> So the problem is on the qc.start() ; If i inspect the 
> >>> QueueConnection i can see that the started=false as normal.
> >>> 
> >>> What is wrong on my code ?
> >>> Could you help me, or tell me what you think about this ?
> >>> 
> >>> Regards,
> >>> Denez
> >>> 
> >> 
> >> 
> > 
> > 
> 
> --
> View this message in context:
> http://www.nabble.com/Error-on-starting-QueueConnection-tf4278515s2354
> .h
> tml#a12182022
> Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to