You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by Fred Crable <fr...@hotmail.com> on 2007/10/10 23:10:38 UTC

gracefully restarting a c++/openwire session

Is there a best practice for gracefully restarting an openwire/c++ consumer
or producer session.  I'm hesitant to destroy and rebuild the connection,
session, and all of the consumers when I get an connection exception in my
exception listener.  I can't use failover:tcp: in an openwire broker uri. 
Do I really have to unwind/destroy all of my consumer handles?  I've looked
all over for some methods or hints but I don't see any examples of
reconnecting after a client connection failure.

Thanks,
Fred
-- 
View this message in context: http://www.nabble.com/gracefully-restarting-a-c%2B%2B-openwire-session-tf4603637s2354.html#a13144886
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


Re: gracefully restarting a c++/openwire session

Posted by Fred Crable <fr...@hotmail.com>.
Thanks, I just wrapped the whole CMS broker/sessions in another class to
handle it.  However, I noticed that if I close the producer/consumer before
I close the broker/session it'll throw an exception.  I think it was
complaining about it already being closed.  Anyway, I've got something
working fairly well now its just a little hairy as to what needs to be
closed/stopped before deleting sessions & brokers.  For others listening,
the order of destruction/shutdown that works for me is:

    for(iSession = m_queues.begin();
        iSession != m_queues.end(); iSession++){
        iSession->second->close();
    }
    for(iSession = m_topics.begin();
        iSession != m_topics.end(); iSession++){
        iSession->second->close();
    }
    if (m_session){
        m_session->close();
        delete m_session;
        m_session = NULL;
    }
    if (m_connection){
        m_connection->stop();
        m_connection->close();
        delete m_connection;
        m_connection = NULL;
   }

>> Where session->close() does: <<

    if(m_consumer){
        //m_consumer->close(); << This fails later when broker/session
deleted!
        delete m_consumer;
        m_consumer = NULL;
    }
    if(m_producer){
        //m_producer->close(); << Same thing here, just left them open
        delete m_producer;
        m_producer = NULL;
    }
    if(m_destination){
        delete m_destination;
        m_destination = NULL;
    }



Tim Bish wrote:
> 
> You must destroy the connection and create a new connection / session 
> etc.  We don't have a fail over transport but you are welcome to write 
> one and donate it  :)
> 
> Fred Crable wrote:
>> Is there a best practice for gracefully restarting an openwire/c++
>> consumer
>> or producer session.  I'm hesitant to destroy and rebuild the connection,
>> session, and all of the consumers when I get an connection exception in
>> my
>> exception listener.  I can't use failover:tcp: in an openwire broker uri. 
>> Do I really have to unwind/destroy all of my consumer handles?  I've
>> looked
>> all over for some methods or hints but I don't see any examples of
>> reconnecting after a client connection failure.
>>
>> Thanks,
>> Fred
>>   
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/gracefully-restarting-a-c%2B%2B-openwire-session-tf4603637s2354.html#a13202868
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


Re: gracefully restarting a c++/openwire session

Posted by Timothy Bish <ta...@twcny.rr.com>.
You must destroy the connection and create a new connection / session 
etc.  We don't have a fail over transport but you are welcome to write 
one and donate it  :)

Fred Crable wrote:
> Is there a best practice for gracefully restarting an openwire/c++ consumer
> or producer session.  I'm hesitant to destroy and rebuild the connection,
> session, and all of the consumers when I get an connection exception in my
> exception listener.  I can't use failover:tcp: in an openwire broker uri. 
> Do I really have to unwind/destroy all of my consumer handles?  I've looked
> all over for some methods or hints but I don't see any examples of
> reconnecting after a client connection failure.
>
> Thanks,
> Fred
>