[ 
https://issues.apache.org/jira/browse/AMQCPP-412?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13293768#comment-13293768
 ] 

sandeep jain commented on AMQCPP-412:
-------------------------------------

Here is the sample code:

int main () {
Connection* _connection;
        Session* _session ;

    Destination* destination;
    MessageConsumer* consumer;
        std::string _brokerIP1;
        std::string _brokerIP2;
        std::string _connectedIp;
        start();
}
        
void
cleanup()
{
        try {
                if (_connection) {
                        _connection->close();
                }
        } catch (CMSException& ex) {
                std::cout <<"error in closing connection";

        }
        if ( consumer ) {
                delete consumer;
                consumer =0;
        }
        if ( destination ) {
                delete destination;
                destination = 0;
        }

        if (_session) {
                delete _session;
                _session = 0;
        }
        if (_connection) {
                delete _connection;
                _connection = 0;
        }
}

void
start()
{
    _brokerIP1 = "127.0.0.1:61616";
        _brokerIP2 = _brokerIP2;
 
    while (1){
       std::string connectionURI = "failover:(tcp://" 
                + brokerIP + 
                ")?randomize=false&maxReconnectAttempts=1";
        activemq::core::ActiveMQConnectionFactory factory = 
                activemq::core::ActiveMQConnectionFactory (connectionURI);
        try {
                _connection = factory.createConnection();
        } catch (CMSException& e){
                //exception
        }
        if (_connection) {
                break;
    }
        sleep(5);
        }

    _connectedIp = connectionURI;
   
    // Create a connection.
    _connection->setExceptionListener(this);
    _session = _connection->createSession(Session::AUTO_ACKNOWLEDGE);

    desitnation = _session->createTopic("Topic");
    consumer = _session->createConsumer(destination);
    consumer->setMessageListener(this);

    _connection->start();

}

void
onMessage(const Message* origMessage)
    throw ()
{
    try {
        //reading data
    } catch (CMSException& ex) {
        //exception
    } catch (std::exception &ex) {
        //exception
    }
}

void
onException(const CMSException& ex) {
        std::cout << "disconnected from " << _connectedIp.c_str();
        cleanup();
        sleep(5);
        start();
}
                
> when trying to to close session or conenction when the producer is already 
> down, close call hangs forever
> ---------------------------------------------------------------------------------------------------------
>
>                 Key: AMQCPP-412
>                 URL: https://issues.apache.org/jira/browse/AMQCPP-412
>             Project: ActiveMQ C++ Client
>          Issue Type: Bug
>          Components: Integration Tests
>    Affects Versions: 3.0
>         Environment: Unix
>            Reporter: sandeep jain
>            Assignee: Timothy Bish
>              Labels: performance
>
> when trying to close the session on connection when producer is already down, 
> the close call hangs forever and neither come out of the call nor throw any 
> ex ception.
> backtrace for the same is:
>   0x28bb33ed in activemq::core::ActiveMQConnection::syncRequest ()
>    from libactivemq-cpp.so.1
> #1  0x28bb3949 in activemq::core::ActiveMQConnection::disposeOf ()
>    from libactivemq-cpp.so.1
> #2  0x28bb3ce4 in activemq::core::ActiveMQConnection::disconnect ()
>    from libactivemq-cpp.so.1
> #3  0x28bb7c9a in activemq::core::ActiveMQConnection::close ()
>    from libactivemq-cpp.so.1

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to