Hi Kevin,

I think from the spec's perspective the behavior you're seeing is the
expected behavior.

https://jms-spec.java.net/2.0/apidocs/javax/jms/Message.html#setJMSMessageID(java.lang.String)

Basically, we intend this method to be used only by the implementor, not
the client.

I know what your next question might be - why does the JMS spec expose
methods that should only be used by implementors?

Well, we thought about removing methods like this, deprecating them, etc.
We couldn't do things that would break backwards compatibility.  This
method is used when you have two implementors running in parallel, say you
have ActiveMQ side by side with HornetQ and you wanted to bridge messages
between the two.  HornetQ may need to override the message ID going into
their system. (Just an example).

John

On Sat, Apr 4, 2015 at 7:09 PM, Kevin Burton <bur...@spinn3r.com> wrote:

> I’m trying to generate unique message IDs so that I can idempotently
> produce messages from our ‘loader’ so that items don’t get processed more
> than once.
>
> The JMS Message ID should do that .. but it looks like when I call
> producer.send() it’s ALWAYs overwritten by a custom message ID:
>
>
> In ActiveMQSession.send it just overwrites it:
>
> msg.setMessageId(new MessageId(producer.getProducerInfo().getProducerId(),
> sequenceNumber));
>
> … so no matter WHAT I want to send , it’s just overwritten.
>
> I’m really hoping I’m doing something or that this is just a bug because it
> would be a shame to lose this feature.
>
> --
>
> Founder/CEO Spinn3r.com
> Location: *San Francisco, CA*
> blog: http://burtonator.wordpress.com
> … or check out my Google+ profile
> <https://plus.google.com/102718274791889610666/posts>
> <http://spinn3r.com>
>

Reply via email to