[prev in list] [next in list] [prev in thread] [next in thread] 

List:       activemq-users
Subject:    Re: Is it possible to generate message-id before sending the JMS message?
From:       Jason Whaley <jasonwhaley () gmail ! com>
Date:       2011-09-26 14:13:50
Message-ID: 71BFEFB7-9498-4D72-BDED-22BCC0D088D2 () gmail ! com
[Download RAW message or body]

Why do that instead of having an idempotent consumer taking messages off of the \
queue?

In the comments from a similar question on stackoverflow.com, Rob Davies suggests \
also just using a well defined header/property for this purpose:  \
http://stackoverflow.com/questions/1868349/apache-activemq-5-3-how-to-configure-a-queue-to-reject-duplicate-messages/1980645#1980645



On Sep 24, 2011, at 10:14 PM, kaustubh khasnis wrote:

> Because in that way we can use activeMQ's built in duplicate detection.
> 
> --Kaustubh
> 
> On Fri, Sep 23, 2011 at 7:46 PM, Jason Whaley <jasonwhaley@gmail.com> wrote:
> 
> > Agreed with Gary's question here... why not use your database to generate a
> > unique ID for each record and then shove that ID in to a property with an
> > application specific name on the JMS message?
> > 
> > 
> > On Sep 23, 2011, at 8:08 AM, Gary Tully wrote:
> > 
> > > be careful, you need to retain the uniqueness constraints of the
> > > component attributes of a message id. have a peek at how the message
> > > id is generated so that you can understand the intent of each
> > > component.
> > > 
> > > Why do you want to override the messageId?
> > > 
> > > On 23 September 2011 14:19, kaustubh khasnis <kaustubh.khasnis@gmail.com>
> > wrote:
> > > > Please correct me if I am wrong, but in same onSend method one could
> > > > override the messageId as well right?
> > > > 
> > > > We also planning to use same, are there any ill-effects of that?
> > > > 
> > > > Thanks and regards
> > > > Kaustubh
> > > > 
> > > > On Thu, Sep 22, 2011 at 11:49 PM, Martin C. <martinc@gmx.at> wrote:
> > > > 
> > > > > Hi,
> > > > > 
> > > > > ok I see, but this is only possible if sending is done directly before
> > > > > committing the database transaction. It wouldn't work so well if
> > > > > sending was done "somewhere" during the process. I had hoped that I
> > > > > could feed something along a UUID as the message ID and it would be
> > > > > used then, but I can see how this would make certain things (like
> > > > > duplicate detection, ...) a lot harder.
> > > > > 
> > > > > Thanks for your answer, anyways!
> > > > > 
> > > > > Best regards,
> > > > > Martin
> > > > > 
> > > > > On Thu, Sep 22, 2011 at 7:36 PM, Gary Tully <gary.tully@gmail.com>
> > wrote:
> > > > > > you would need to pass use your own message impl that extends
> > > > > > ActiveMQMessage and override
> > > > > > org.apache.activemq.command.ActiveMQMessage#onSend
> > > > > > 
> > > > > > on that callback, you will have the messageId and be able to commit
> > > > > > the db transaction. On return from that method the message will be
> > > > > > sent.
> > > > > > be sure and call super.onSend() though.
> > > > > > 
> > > > > > On 22 September 2011 18:09, Martin C. <martinc@gmx.at> wrote:
> > > > > > > Hi,
> > > > > > > 
> > > > > > > I'd like to know the message ID of a message I am going to send
> > before
> > > > > > > actually sending it. Is this possible?
> > > > > > > 
> > > > > > > Reason is that I want to delay sending the JMS messages until my
> > > > > > > database transaction has been comitted, but I already want to record
> > > > > > > the message IDs as correlation IDs in exactly this database
> > > > > > > transaction.
> > > > > > > 
> > > > > > > Best regards,
> > > > > > > Martin
> > > > > > > 
> > > > > > 
> > > > > > 
> > > > > > 
> > > > > > --
> > > > > > http://fusesource.com
> > > > > > http://blog.garytully.com
> > > > > > 
> > > > > 
> > > > 
> > > 
> > > 
> > > 
> > > --
> > > http://fusesource.com
> > > http://blog.garytully.com
> > 
> > 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic