I am new to Camel and am trying to migrate some code I wrote using the
javax.jms classes across to Camel. I have a specific problem and I am not
too sure if my approach is the optimal solution. I would really appreciate
some feedback from the veterans on this list.

Basically, my application performs the following:
1) A consumer retrieves a Serialized Java object from a Queue.
2) The contents of a data field within the object are matched against a set
of database records.
3) If the content corresponds to an existing record, the database record is
updated and the object is discarded.
4) If the content is new, it is written to the database, some of the object
data is updated and it is routed to another JMS queue for further
processing.

My approach in Camel has been to create a RouteBuilder that works something
like this
from("jms:queue:testQueue")
  .process(new TestDBFilter())
 
.filter(header("newContent").isEqualTo("true")).to("jms:queue:otherTestQueue");

My TestDBFilter class basically
 - extracts the content from the message using getIn();
 - Performs the DB lookup
 - Updates the message headers on getOut()

Is this a valid approach? It seems a bit contrived to me that I have to put
a filter on a header field after my processor executes. Two specific
questions:
1) Is there a simpler/more efficient way to do this?
2) Do I have to do anything special to the message to get rid of it (in
cases where the DB record already exists). Or will it just be discarded when
it fails on my filter predicate?

Thanks in advance for any feedback/advice

Tristan
-- 
View this message in context: 
http://www.nabble.com/Newbie-Question---Content-Filtering-tp22107198s22882p22107198.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to