The following program depends on the time it takes to rollback the session.
If I run it in a debugger line by line it returns the correct behavior
("Another Test message" in "testqueue" queue) but if I let it run I get
"Test message". Is this something by design (are only asynchronous rollbacks
supported?) or is it a bug? This test program will always return "Another
Test message" if I increase to time to receive the message because it has
time to get the message because the rollback is finished but it doesn't
solve the issue. I don't know if this is a server or client issue.

        ActiveMQConnectionFactory factory("tcp://localhost:61616");
        cms::Connection* connection(factory.createConnection());
        connection->start();

        cms::Session* session =
connection->createSession(cms::Session::SESSION_TRANSACTED);
        cms::Queue* queue = session->createQueue("testqueue");
        cms::MessageProducer* producer(session->createProducer(queue));
        cms::MessageConsumer* consumer = session->createConsumer(queue);

        cms::Message* message = session->createTextMessage("Test message");
        producer->send(message);

        session->commit();

        for ( int i=1; i<=4; i++ )
        {
                cms::Message* receivedMessage = consumer->receive(500);
                if ( receivedMessage && receivedMessage->getIntProperty(
"JMSXDeliveryCount" ) == 3 )
                {
                        cms::Message* newMessage = 
session->createTextMessage("Another Test
message");
                        producer->send(newMessage);
                        session->commit();
                }
                else
                        session->rollback();
        }



--
View this message in context: 
http://activemq.2283324.n4.nabble.com/ActiveMQ-CPP-Rollback-function-returns-but-the-server-isn-t-done-rollbacking-tp4668896.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to