activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Timothy Bish <tabish...@gmail.com>
Subject Re: Modifying consumed message (AcvtiveMQ-CPP)
Date Thu, 30 Aug 2012 19:40:18 GMT
On Thu, 2012-08-30 at 12:44 +0100, spam trap wrote: 
> On Wed, 29 Aug 2012 10:08:36 -0400, Timothy Bish
> <tabish121@gmail.com> wrote:
> 
> >On Wed, 2012-08-29 at 15:04 +0100, spam trap wrote: 
> >> On Wed, 29 Aug 2012 08:46:18 -0400, Timothy Bish
> >> <tabish121@gmail.com> wrote:
> >> 
> >> >On Wed, 2012-08-29 at 13:35 +0100, spam trap wrote: 
> >> >> I need to modify a consumed message (add new properties & change
> >> >> payload) and then send it.  I know I can't do this directly as a
> >> >> consumed message is read-only.  However I also find that a cloned copy
> >> >> is also read-only.
> >> >> 
> >> >> How can I achieve this?
> >> >> 
> >> >
> >> >Sounds like a bug, you should open a Jira issue and attach a test case.
> >> >
> >> >You can reset the read-only flags manually by casting down to the
> >> >activemq::commands::Message type and calling the methods
> >> >setReadOnlyProperties and setReadOnlyBody.
> >> 
> >> I've tried this but it hasn't made any difference.  I know there could
> >> be something wrong with my code but it works if the Message object is
> >> newly created by not if it is cloned from a consumed message (received
> >> via an async consumer).
> >> 
> >
> >Best thing to do then is to create a new Jira issue and attach a unit
> >test. 
> 
> OK.  We'll do this.  For now we'll also need a workaround.  I can
> create a new message and copy over the body easily.  I am not sure how
> to determine the type of the properties so that these can be copied.
> 
> Any ideas, thanks?
> 

This is fixed on trunk. also on trunk you can now query for property
types in the Message objects.  Not sure there is a workaround on the
v3.4.x code.  You might be able to cast down to the
activemq::commands::Message type and dig into the PrimitiveMap where the
properties are actually stored.  From my testing though calling
setReadOnlyProperties(false) works just fine.

-- 
Tim Bish
Sr Software Engineer | FuseSource Corp
tim.bish@fusesource.com | www.fusesource.com
skype: tabish121 | twitter: @tabish121
blog: http://timbish.blogspot.com/


Mime
View raw message