activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From sgliu <sheng...@sina.com>
Subject RE: Message's live time
Date Wed, 29 Nov 2006 10:44:17 GMT

In Producer,follow code:

...
#include <sys/timeb.h>
unsigned long getcurt()
{
	struct timeb t;
	ftime (&t);
	unsigned long timeStamp = (t.time * 1000LL) + t.millitm;
	return timeStamp;
}
...
destination = session->createTopic( "mytopic" );
producer = session->createProducer( destination );
producer->setDeliveryMode( DeliveryMode::PERSISTANT );
...
unsigned long ttt=getcurt();
message->setCMSTimeStamp(ttt);
message->setCMSExpiration(ttt + 10000);
//producer->setTimeToLive(10000);
producer->send( message );
...

In Consumer ,follow code:
...
... ...
    virtual void run() {
    	    	
        try {

			string user,passwd,sID;
			user="default";
			passwd="";
			sID="lsgID";
            // Create a ConnectionFactory
            ActiveMQConnectionFactory* connectionFactory = 
                new ActiveMQConnectionFactory(
"tcp://localhost:61613",user,passwd,sID);

            // Create a Connection
            connection =
connectionFactory->createConnection();//user,passwd,sID);
            delete connectionFactory;
            connection->start();
            
            connection->setExceptionListener(this);
            session = connection->createSession( Session::AUTO_ACKNOWLEDGE
);
			destination = session->createTopic( "mytopic?consumer.retroactive=true"
);

			consumer = session->createDurableConsumer( destination , user ,
"",false);
            
            consumer->setMessageListener( this );
            Thread::sleep( waitMillis );		
            
        } catch (CMSException& e) {
            e.printStackTrace();
        }
    }
    
    virtual void onMessage( const Message* message ){
    	
        try
        {
    	    const TextMessage* textMessage = 
                dynamic_cast< const TextMessage* >( message );
            string text = textMessage->getText();
            printf( "Received: %s\n", text.c_str() );
        } catch (CMSException& e) {
            e.printStackTrace();
        }
    }

    virtual void onException( const CMSException& ex ) {
        printf("JMS Exception occured.  Shutting down client.\n");
    }
... ...

I hope:
send first,a few time later,I receive nothing.
(a few time later,message will disappear itself.)

(I use visual C++ 2005)
Please help me.



I guess I'm not sure exactly what you're trying to do.  I don't see a
consumer in the code snippets.  Is your consumer a C++ or Java client?
Are you using an asynchronous consumer through the MessageListener
interface, or are you calling receive() after a timed wait?

-- 
View this message in context: http://www.nabble.com/Message%27s-live-time-tf2706004.html#a7597066
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


Mime
View raw message