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: [email protected]
> 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.maxInac
> 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.maxInac
> 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.