On Fri, 2008-12-05 at 05:03 -0800, Sodan wrote:
> So I get a message and create a producer based on the destination 
>   const cms::Destination *cmsdst = map->getCMSReplyTo();
>   session->createProducer(cmsdst);
> which works fine.
> 
> The thing is that I dont need to reply instantly back, when I get a message,
> instead I will send back messages after 1 minute or 1 hour.
> So is the above Destination valid forever or ?
> 
> So the 2 questions are:
> 1) the above 'const cms::Destination' objects, who owns that and for how
> long,
> or can/should I make a copy of it or ?
> 2) tried to do
>   string providerstring = cmsdst->toProviderString();
>   t = session->createQUEUE(providerstring);
>   session->createProducer(t);
> but this does not work... no messages seems to hit the other end
> 
> The providerstring returned is:  "ID:verisign-45349-1228314908106-0:32:1"
> 
> So I get a message... and need to reply later, sometimes much later...
> What is the best approach ?
> 

cms::Destination provides a clone method that will create a valid copy
of the Destination that you can keep around for a later response.  Any
pointers that are returned from CMS interfaces as const are considered
to be the property of the CMS classes and should not be deleted or
assumed to exist for any longer that the current scope you are in, e.g.
Message's received in onMessage callbacks are only guaranteed to exist
during the lifetime of that onMessage call and no longer so the
cms::Destination pointer returned from getCMSReplyTo is subject to the
same lifetime.

Regards
Tim.



-- 
Tim Bish
http://fusesource.com
http://timbish.blogspot.com/



Reply via email to