On 10/10/2017 05:06 PM, Harrison Tarr wrote:
Hello again,

I wanted to follow up on this as I've done some more experimenting. I've found that when I use the 
Core protocol or Openwire protocol, everything works as expected. I am able to use the 
"setStringProperty" in my ActiveMQServerPlugin and it adds a header that I can then 
access in my Camel consumer code. However, if I try to add a property to a message that was sent 
using the AMQP protocol, it does not stay set on the message. It appears to me that this is because 
the AMQP message is more protected? Maybe it has all of the data in an immutable ByteBuffer? I've 
tried using the "reencode" method on the 
org.apache.activemq.artemis.protocol.amqp.broker.AMQPMessage class, but it causes an error; it 
can't parse the message back out, it says something about an unknown constructor. (Being handled 
here 
https://github.com/apache/qpid-jms/blob/master/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpConsumer.java#L496)

AMQP ApplicationProperties are immutable so you cannot change or add to them in flight, that would violate the AMQP specification.

Justin, I've looked at the remoting interceptors. I think I decided against 
using them because it does not expose as much information to me as I wanted. 
I'm specifically trying to take the authentication credentials and then create 
some kind of authentication token to attach to the message that I can then use 
in my consuming code.

Regards,
Harrison Tarr


-----Original Message-----
From: Justin Bertram [mailto:jbert...@redhat.com]
Sent: Tuesday, September 12, 2017 3:28 PM
To: users@activemq.apache.org
Subject: Re: How to put "properties" on a message so they are accessible later

I'm not terribly familiar with the ActiveMQServerPlugin functionality in this 
regard, but I do know that you can make such modifications to messages using 
remoting interceptors.  Have you explored that possibility?


Justin

On Tue, Sep 12, 2017 at 3:45 PM, Harrison Tarr <harrison.t...@connexta.com>
wrote:

Right now I'm using Artemis 2.2.0.
I've done a bit more research and experimentation. It seems that I can
set a header in Camel, send the message to a queue/topic hosted on
Artemis and read the header as a "stringProperty". The header keys
also show up when I do a "getProperties" call. However, if I try to
overwrite that field in my ActiveMQServerPlugin (specifically the
beforeSend call), the change is not propagated to Camel. IE, if I send a message with the 
header "testHeader"
with a value of "testValue", I can see, in Artemis, "testHeader" as a
property on the message with the value of "testValue". If I then try
to overwrite that value with "newValue", when I access the message and
its headers in the consumer, the header is still "testHeader" with the
value of "testValue", whereas I expect it to be "testHeader" with a
value of "newValue".

Harrison Tarr

-----Original Message-----
From: tbai...@gmail.com [mailto:tbai...@gmail.com] On Behalf Of Tim
Bain
Sent: Monday, September 11, 2017 6:26 PM
To: ActiveMQ Users <users@activemq.apache.org>
Subject: RE: How to put "properties" on a message so they are
accessible later

To be clear, you're asking about doing this in Artemis, not ActiveMQ
5.x, right? What version of Artemis?

On Sep 11, 2017 2:48 PM, "Harrison Tarr" <harrison.t...@connexta.com>
wrote:

I just wanted to follow up: Does anyone know how to put an
attribute/property on a message in an ActiveMQServerPlugin that I
can then pull out of the message in Camel?

Regards,
Harrison Tarr

-----Original Message-----
From: Harrison Tarr [mailto:harrison.t...@connexta.com]
Sent: Wednesday, September 6, 2017 8:56 AM
To: users@activemq.apache.org
Subject: How to put "properties" on a message so they are accessible
later

Hi,

I'm trying to put a StringProperty on a Message in an
ActiveMQServerPlugin. As far as I can tell, the property gets set
correctly. Later, I'm trying to retrieve the property from a Camel
Exchange. I don't see my property anywhere on the Exchange. I did
notice that it looks like the properties "firedTime" and
"breadcrumbId," which I think come from Artemis, do appear on the
Camel Exchange, which makes me think there is some way to propagate
my
property from Artemis to Camel.
Regards,
Harrison Tarr


--
Tim Bish
twitter: @tabish121
blog: http://timbish.blogspot.com/

Reply via email to