You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by "Suchitha Koneru (sukoneru)" <su...@cisco.com> on 2007/02/09 21:08:39 UTC

durable subscriptions not working

Hello active mq users , 
                I have Java 1.5.09 , Tomcat 5.5 .
 I am using the following active mq jars activemq-core-4.0.1.jar ,
backport-util-concurrent-2.1.jar , geronimo-j2ee-
management_1.0_spec-1.0.jar, geronimo-jms_1.1_spec-1.0.jar ,
incubator-activemq-4.0.2.jar
 
I have two classes Herbie Publisher , Herbie Subscriber . The
ConnectionFactory and the Topic are mentioned as JNDI resources in
Tomcat/Conf/Context.xml 

        <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" 
             />
      
        <Resource name="jms/PNMTopic" 
             auth="Container" 
             type="org.apache.activemq.command.ActiveMQTopic" 
             description="the topic against which the client back end
will publish and server back end would subscribe"
 
factory="org.apache.activemq.jndi.JNDIReferenceFactory" 
             physicalName="FOO3.BAR"/>
 
The code for Herbie Publisher is as follows 
//code for intialization 
Ictx = new InitialContext();

envContext =(Context ) Ictx.lookup("java:comp/env");

//code for getting connection  , creating session and publishing 
try{

javax.jms.TopicConnectionFactory factory =
(javax.jms.TopicConnectionFactory)envContext.lookup("jms/ConnectionFacto
ry");

// create a new TopicConnection for pub/sub messaging

HerbieTopicConnection  = factory.createTopicConnection();

topic = (Topic)envContext.lookup("jms/PNMTopic") ;

if(HerbieTopicConnection != null){

HerbieSession =
(ActiveMQSession)HerbieTopicConnection.createSession(false,
Session.AUTO_ACKNOWLEDGE);

HerbieTopicConnection.start();

TopicPublisher pub = Sess.createPublisher(topic);

pub.setTimeToLive(10000);

pub.setDeliveryMode(DeliveryMode.PERSISTENT);

String msg = "This is a test message";

pub.send( Sess.createTextMessage(msg));

pub.close();

Sess.close();

HerbieTopicConnection.close();

}

catch(Exception e){

e.printStackTrace();

}

The Herbie Subscriber code is as follows 
// Intialiization same as Herbie Publisher , same as above
//establish connection, create durable subscriber and receive messages 
  
javax.jms.TopicConnectionFactory factory =
(javax.jms.TopicConnectionFactory)envContext.lookup("jms/ConnectionFacto
ry");

HerbieTopicConnection = factory.createTopicConnection();

topic = (Topic)envContext.lookup("jms/PNMTopic") ;

if(HerbieTopicConnection != null){

HerbieSession =
(ActiveMQSession)HerbieTopicConnection.createSession(false,
Session.AUTO_ACKNOWLEDGE);

topic = (Topic)envContext.lookup("jms/PNMTopic") ;

//creating durable subscriber using topic and subscription name

TopicSubscriber Subs =
Sess.createDurableSubscriber(topic,"durablesubscription");

HerbieTopicConnection.setCleintID("CLIENTID");

HerbieTopicConnection.start();

public void onMessage(Message arg0) {

System.out.println("Received message: " + arg0.toString());

}

}
 
I do not see the messages getting exchanged. I am not sure , as to what
went wrong. Please let me know, If Iam missing anything in the
configuration. As of now,, I am using tuple(CLientID, Topic ,
subscription name) to uniquely identify the durable subscription.
 
thank you,
Suchitha.
 
 
 
 

 


Re: durable subscriptions not working

Posted by James Strachan <ja...@gmail.com>.
On 2/9/07, Suchitha Koneru (sukoneru) <su...@cisco.com> wrote:
> I create the publisher  first and then the subsciber

You must create the subscriber first to get the messages. For topics
messages are only delivered to the available consumers at the time the
broker receives the message.

For durable subscribers you can create a subscriber, kill it, run the
publisher, then start the subscriber again.

http://activemq.apache.org/how-does-a-queue-compare-to-a-topic.html
http://activemq.apache.org/how-do-durable-queues-and-topics-work.html

James

>
> -----Original Message-----
> From: James Strachan [mailto:james.strachan@gmail.com]
> Sent: Friday, February 09, 2007 12:50 PM
> To: users@activemq.apache.org
> Subject: Re: durable subscriptions not working
>
> Do you create the subscriber first before running the publisher?
>
> On 2/9/07, Suchitha Koneru (sukoneru) <su...@cisco.com> wrote:
> > Hello active mq users ,
> >                 I have Java 1.5.09 , Tomcat 5.5 .
> >  I am using the following active mq jars activemq-core-4.0.1.jar ,
> > backport-util-concurrent-2.1.jar , geronimo-j2ee-
> > management_1.0_spec-1.0.jar, geronimo-jms_1.1_spec-1.0.jar ,
> > incubator-activemq-4.0.2.jar
> >
> > I have two classes Herbie Publisher , Herbie Subscriber . The
> > ConnectionFactory and the Topic are mentioned as JNDI resources in
> > Tomcat/Conf/Context.xml
> >
> >         <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"
> >              />
> >
> >         <Resource name="jms/PNMTopic"
> >              auth="Container"
> >              type="org.apache.activemq.command.ActiveMQTopic"
> >              description="the topic against which the client back end
> > will publish and server back end would subscribe"
> >
> > factory="org.apache.activemq.jndi.JNDIReferenceFactory"
> >              physicalName="FOO3.BAR"/>
> >
> > The code for Herbie Publisher is as follows //code for intialization
> > Ictx = new InitialContext();
> >
> > envContext =(Context ) Ictx.lookup("java:comp/env");
> >
> > //code for getting connection  , creating session and publishing try{
> >
> > javax.jms.TopicConnectionFactory factory =
> > (javax.jms.TopicConnectionFactory)envContext.lookup("jms/ConnectionFac
> > to
> > ry");
> >
> > // create a new TopicConnection for pub/sub messaging
> >
> > HerbieTopicConnection  = factory.createTopicConnection();
> >
> > topic = (Topic)envContext.lookup("jms/PNMTopic") ;
> >
> > if(HerbieTopicConnection != null){
> >
> > HerbieSession =
> > (ActiveMQSession)HerbieTopicConnection.createSession(false,
> > Session.AUTO_ACKNOWLEDGE);
> >
> > HerbieTopicConnection.start();
> >
> > TopicPublisher pub = Sess.createPublisher(topic);
> >
> > pub.setTimeToLive(10000);
> >
> > pub.setDeliveryMode(DeliveryMode.PERSISTENT);
> >
> > String msg = "This is a test message";
> >
> > pub.send( Sess.createTextMessage(msg));
> >
> > pub.close();
> >
> > Sess.close();
> >
> > HerbieTopicConnection.close();
> >
> > }
> >
> > catch(Exception e){
> >
> > e.printStackTrace();
> >
> > }
> >
> > The Herbie Subscriber code is as follows // Intialiization same as
> > Herbie Publisher , same as above //establish connection, create
> > durable subscriber and receive messages
> >
> > javax.jms.TopicConnectionFactory factory =
> > (javax.jms.TopicConnectionFactory)envContext.lookup("jms/ConnectionFac
> > to
> > ry");
> >
> > HerbieTopicConnection = factory.createTopicConnection();
> >
> > topic = (Topic)envContext.lookup("jms/PNMTopic") ;
> >
> > if(HerbieTopicConnection != null){
> >
> > HerbieSession =
> > (ActiveMQSession)HerbieTopicConnection.createSession(false,
> > Session.AUTO_ACKNOWLEDGE);
> >
> > topic = (Topic)envContext.lookup("jms/PNMTopic") ;
> >
> > //creating durable subscriber using topic and subscription name
> >
> > TopicSubscriber Subs =
> > Sess.createDurableSubscriber(topic,"durablesubscription");
> >
> > HerbieTopicConnection.setCleintID("CLIENTID");
> >
> > HerbieTopicConnection.start();
> >
> > public void onMessage(Message arg0) {
> >
> > System.out.println("Received message: " + arg0.toString());
> >
> > }
> >
> > }
> >
> > I do not see the messages getting exchanged. I am not sure , as to
> > what went wrong. Please let me know, If Iam missing anything in the
> > configuration. As of now,, I am using tuple(CLientID, Topic ,
> > subscription name) to uniquely identify the durable subscription.
> >
> > thank you,
> > Suchitha.
> >
> >
> >
> >
> >
> >
> >
> >
>
>
> --
>
> James
> -------
> http://radio.weblogs.com/0112098/
>


-- 

James
-------
http://radio.weblogs.com/0112098/

RE: durable subscriptions not working

Posted by "Suchitha Koneru (sukoneru)" <su...@cisco.com>.
I create the publisher  first and then the subsciber  

-----Original Message-----
From: James Strachan [mailto:james.strachan@gmail.com] 
Sent: Friday, February 09, 2007 12:50 PM
To: users@activemq.apache.org
Subject: Re: durable subscriptions not working

Do you create the subscriber first before running the publisher?

On 2/9/07, Suchitha Koneru (sukoneru) <su...@cisco.com> wrote:
> Hello active mq users ,
>                 I have Java 1.5.09 , Tomcat 5.5 .
>  I am using the following active mq jars activemq-core-4.0.1.jar , 
> backport-util-concurrent-2.1.jar , geronimo-j2ee- 
> management_1.0_spec-1.0.jar, geronimo-jms_1.1_spec-1.0.jar , 
> incubator-activemq-4.0.2.jar
>
> I have two classes Herbie Publisher , Herbie Subscriber . The 
> ConnectionFactory and the Topic are mentioned as JNDI resources in 
> Tomcat/Conf/Context.xml
>
>         <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"
>              />
>
>         <Resource name="jms/PNMTopic"
>              auth="Container"
>              type="org.apache.activemq.command.ActiveMQTopic"
>              description="the topic against which the client back end 
> will publish and server back end would subscribe"
>
> factory="org.apache.activemq.jndi.JNDIReferenceFactory"
>              physicalName="FOO3.BAR"/>
>
> The code for Herbie Publisher is as follows //code for intialization 
> Ictx = new InitialContext();
>
> envContext =(Context ) Ictx.lookup("java:comp/env");
>
> //code for getting connection  , creating session and publishing try{
>
> javax.jms.TopicConnectionFactory factory = 
> (javax.jms.TopicConnectionFactory)envContext.lookup("jms/ConnectionFac
> to
> ry");
>
> // create a new TopicConnection for pub/sub messaging
>
> HerbieTopicConnection  = factory.createTopicConnection();
>
> topic = (Topic)envContext.lookup("jms/PNMTopic") ;
>
> if(HerbieTopicConnection != null){
>
> HerbieSession =
> (ActiveMQSession)HerbieTopicConnection.createSession(false,
> Session.AUTO_ACKNOWLEDGE);
>
> HerbieTopicConnection.start();
>
> TopicPublisher pub = Sess.createPublisher(topic);
>
> pub.setTimeToLive(10000);
>
> pub.setDeliveryMode(DeliveryMode.PERSISTENT);
>
> String msg = "This is a test message";
>
> pub.send( Sess.createTextMessage(msg));
>
> pub.close();
>
> Sess.close();
>
> HerbieTopicConnection.close();
>
> }
>
> catch(Exception e){
>
> e.printStackTrace();
>
> }
>
> The Herbie Subscriber code is as follows // Intialiization same as 
> Herbie Publisher , same as above //establish connection, create 
> durable subscriber and receive messages
>
> javax.jms.TopicConnectionFactory factory = 
> (javax.jms.TopicConnectionFactory)envContext.lookup("jms/ConnectionFac
> to
> ry");
>
> HerbieTopicConnection = factory.createTopicConnection();
>
> topic = (Topic)envContext.lookup("jms/PNMTopic") ;
>
> if(HerbieTopicConnection != null){
>
> HerbieSession =
> (ActiveMQSession)HerbieTopicConnection.createSession(false,
> Session.AUTO_ACKNOWLEDGE);
>
> topic = (Topic)envContext.lookup("jms/PNMTopic") ;
>
> //creating durable subscriber using topic and subscription name
>
> TopicSubscriber Subs =
> Sess.createDurableSubscriber(topic,"durablesubscription");
>
> HerbieTopicConnection.setCleintID("CLIENTID");
>
> HerbieTopicConnection.start();
>
> public void onMessage(Message arg0) {
>
> System.out.println("Received message: " + arg0.toString());
>
> }
>
> }
>
> I do not see the messages getting exchanged. I am not sure , as to 
> what went wrong. Please let me know, If Iam missing anything in the 
> configuration. As of now,, I am using tuple(CLientID, Topic , 
> subscription name) to uniquely identify the durable subscription.
>
> thank you,
> Suchitha.
>
>
>
>
>
>
>
>


-- 

James
-------
http://radio.weblogs.com/0112098/

Re: durable subscriptions not working

Posted by James Strachan <ja...@gmail.com>.
Do you create the subscriber first before running the publisher?

On 2/9/07, Suchitha Koneru (sukoneru) <su...@cisco.com> wrote:
> Hello active mq users ,
>                 I have Java 1.5.09 , Tomcat 5.5 .
>  I am using the following active mq jars activemq-core-4.0.1.jar ,
> backport-util-concurrent-2.1.jar , geronimo-j2ee-
> management_1.0_spec-1.0.jar, geronimo-jms_1.1_spec-1.0.jar ,
> incubator-activemq-4.0.2.jar
>
> I have two classes Herbie Publisher , Herbie Subscriber . The
> ConnectionFactory and the Topic are mentioned as JNDI resources in
> Tomcat/Conf/Context.xml
>
>         <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"
>              />
>
>         <Resource name="jms/PNMTopic"
>              auth="Container"
>              type="org.apache.activemq.command.ActiveMQTopic"
>              description="the topic against which the client back end
> will publish and server back end would subscribe"
>
> factory="org.apache.activemq.jndi.JNDIReferenceFactory"
>              physicalName="FOO3.BAR"/>
>
> The code for Herbie Publisher is as follows
> //code for intialization
> Ictx = new InitialContext();
>
> envContext =(Context ) Ictx.lookup("java:comp/env");
>
> //code for getting connection  , creating session and publishing
> try{
>
> javax.jms.TopicConnectionFactory factory =
> (javax.jms.TopicConnectionFactory)envContext.lookup("jms/ConnectionFacto
> ry");
>
> // create a new TopicConnection for pub/sub messaging
>
> HerbieTopicConnection  = factory.createTopicConnection();
>
> topic = (Topic)envContext.lookup("jms/PNMTopic") ;
>
> if(HerbieTopicConnection != null){
>
> HerbieSession =
> (ActiveMQSession)HerbieTopicConnection.createSession(false,
> Session.AUTO_ACKNOWLEDGE);
>
> HerbieTopicConnection.start();
>
> TopicPublisher pub = Sess.createPublisher(topic);
>
> pub.setTimeToLive(10000);
>
> pub.setDeliveryMode(DeliveryMode.PERSISTENT);
>
> String msg = "This is a test message";
>
> pub.send( Sess.createTextMessage(msg));
>
> pub.close();
>
> Sess.close();
>
> HerbieTopicConnection.close();
>
> }
>
> catch(Exception e){
>
> e.printStackTrace();
>
> }
>
> The Herbie Subscriber code is as follows
> // Intialiization same as Herbie Publisher , same as above
> //establish connection, create durable subscriber and receive messages
>
> javax.jms.TopicConnectionFactory factory =
> (javax.jms.TopicConnectionFactory)envContext.lookup("jms/ConnectionFacto
> ry");
>
> HerbieTopicConnection = factory.createTopicConnection();
>
> topic = (Topic)envContext.lookup("jms/PNMTopic") ;
>
> if(HerbieTopicConnection != null){
>
> HerbieSession =
> (ActiveMQSession)HerbieTopicConnection.createSession(false,
> Session.AUTO_ACKNOWLEDGE);
>
> topic = (Topic)envContext.lookup("jms/PNMTopic") ;
>
> //creating durable subscriber using topic and subscription name
>
> TopicSubscriber Subs =
> Sess.createDurableSubscriber(topic,"durablesubscription");
>
> HerbieTopicConnection.setCleintID("CLIENTID");
>
> HerbieTopicConnection.start();
>
> public void onMessage(Message arg0) {
>
> System.out.println("Received message: " + arg0.toString());
>
> }
>
> }
>
> I do not see the messages getting exchanged. I am not sure , as to what
> went wrong. Please let me know, If Iam missing anything in the
> configuration. As of now,, I am using tuple(CLientID, Topic ,
> subscription name) to uniquely identify the durable subscription.
>
> thank you,
> Suchitha.
>
>
>
>
>
>
>
>


-- 

James
-------
http://radio.weblogs.com/0112098/