Thanks, based on some of your suggestions and some more research, I was able to come up with a suitable solution.
Allen Lau-2 wrote: > > I would think something like > > .beanRef("processor", "process") > .split().method("mySplitterBean", "splitMessage") > .choice > .when(simple("${in.header.error} != null").to("mock:invalid") > .otherwise().to("mock:valid"); > > Your mySplitterBean would just create a 2 different messages, one with the > error header > and one without. Checkout the example on the splitter page for an > example. > > In the case there is no error, then your splitter should just return 1 > message and you should be fine. > > Hope that helps. > Allen > > On Thu, Mar 25, 2010 at 8:39 AM, jfaath <jfa...@apache.org> wrote: > >> >> The splitter stuff doesn't seem to be useful for my issue, but I can see >> now >> in the CBR page how to do logic in the route based on the header. In >> fact, >> I was using the CBR on my route already. I'm still not clear on how to >> actually set the header to the "error object in java code. >> >> Here is the gist of my actual route. Based on the XML content of the >> message coming in, I route to a different java processor. However, this >> error method I want to use is common to all processors. Can you offer a >> quick suggestion as to how I would do it using the route below? >> >> from("jetty:http://0.0.0.0:8282/process").convertBodyTo(String.class) >> .inOnly("jms:queue:data.inbound") >> .choice >> .when().xpath("/readingsType1") >> .unmarshal(jaxbDf) >> .beanRef("dataProcessor1", "process") >> .when().xpath("/readingsType2") >> .unmarshal(jaxbDf) >> .beanRef("dataProcessor2", "process") >> .otherwise().to("mock:invalid") >> >> >> Allen Lau-2 wrote: >> > >> > Look at these pages for samples. >> > >> > http://camel.apache.org/splitter.html >> > http://camel.apache.org/content-based-router.html >> > >> > I would most likely create a POJO to split the message up and then use >> the >> > content base router to >> > route the message. >> > >> > On Wed, Mar 24, 2010 at 9:04 AM, jfaath <jfa...@apache.org> wrote: >> > >> >> >> >> I'll give this a shot. Can you give me a quick example or point me to >> a >> >> sample that does something similar (ex. setting a header in code, >> >> performing >> >> conditional logic in a route based on a header). >> >> >> >> -JF >> >> >> >> >> >> Allen Lau-2 wrote: >> >> > >> >> > I could be wrong here, but you could easily stick the "error" object >> as >> >> > part >> >> > of the message header. As long as your components >> >> > understand that header, you can easily retrieve it and only send >> that >> >> > portion to an error queue. >> >> > >> >> > The default message headers in Camel is defined as >> >> > >> >> > Map<String, Object> headers; >> >> > >> >> > so basically you can stuff whatever you want into it. >> >> > >> >> > >> >> > On Tue, Mar 23, 2010 at 4:02 PM, jfaath <jfa...@apache.org> wrote: >> >> > >> >> >> >> >> >> I'm not sure that would work. As I stated in my original post, I >> >> don't >> >> >> want >> >> >> to send the entire message to the error queue, just the portion >> that >> >> was >> >> >> invalid. So, if my original message has, say, 11 readings, and 3 >> of >> >> them >> >> >> are bad, I only want to send the 3 bad ones to the error queue. >> >> During >> >> >> processing, I stick the bad readings into an "error object". It's >> the >> >> >> contents of this object (that I can easily marshal to XML) that I >> want >> >> to >> >> >> send to the queue. >> >> >> >> >> >> FYI, here is a simplified version of my route: >> >> >> >> >> >> >> >> >> from("jetty:http://0.0.0.0:8282/process >> ").convertBodyTo(String.class) >> >> >> .inOnly("jms:queue:data.inbound") >> >> >> .unmarshal(jaxbDf) >> >> >> .beanRef("dataProcessor", "process") >> >> >> >> >> >> >> >> >> Allen Lau-2 wrote: >> >> >> > >> >> >> > How about just setting a header when you are done processing and >> >> there >> >> >> is >> >> >> > an >> >> >> > error? >> >> >> > >> >> >> > Then in your route, just send any message to the error queue when >> >> the >> >> >> > header >> >> >> > is detected. >> >> >> > >> >> >> > On Tue, Mar 23, 2010 at 11:57 AM, jfaath <jfa...@apache.org> >> wrote: >> >> >> > >> >> >> >> >> >> >> >> I'm looking for some advice on how to deal with errors during a >> >> large >> >> >> >> processing task. It seems like it should be simple but I'm >> having >> >> >> >> trouble >> >> >> >> figuring out what to do. >> >> >> >> >> >> >> >> I have an HTTP endpoint that receives XML messages then sticks >> them >> >> in >> >> >> a >> >> >> >> processing queue. From the queue, they get unmarshalled into >> JAXB >> >> >> >> objects >> >> >> >> and then processed by a Java class. Now, the messages consist >> or >> a >> >> >> large >> >> >> >> number of readings. Some may be good, some may be bad. The >> good >> >> ones >> >> >> >> get >> >> >> >> processed, but the bad ones are stuffed into a JAXB object. >> >> >> >> >> >> >> >> When the processing is done, I'd like to throw this object on an >> >> error >> >> >> >> queue >> >> >> >> (or, marshal then throw on the queue). But I can't figure out >> how >> >> to >> >> >> do >> >> >> >> this the best way. The processing class should exit gracefully >> so >> >> I >> >> >> >> don't >> >> >> >> want to throw a final exception. >> >> >> >> >> >> >> >> What might be the best way to do this? Can I add the error >> object >> >> to >> >> >> a >> >> >> >> queue programmatically within the processor? Can the processor >> >> return >> >> >> >> the >> >> >> >> error object so I can throw it on the queue via the route? Is >> >> there >> >> a >> >> >> >> nice >> >> >> >> and easy way to do this? >> >> >> >> >> >> >> >> Thanks, >> >> >> >> >> >> >> >> JF >> >> >> >> -- >> >> >> >> View this message in context: >> >> >> >> >> >> >> >> >> >> http://old.nabble.com/error-handling-advice-with-queues-tp28005566p28005566.html >> >> >> >> Sent from the Camel - Users mailing list archive at Nabble.com. >> >> >> >> >> >> >> >> >> >> >> > >> >> >> > >> >> >> >> >> >> -- >> >> >> View this message in context: >> >> >> >> >> >> http://old.nabble.com/error-handling-advice-with-queues-tp28005566p28008395.html >> >> >> Sent from the Camel - Users mailing list archive at Nabble.com. >> >> >> >> >> >> >> >> > >> >> > >> >> >> >> -- >> >> View this message in context: >> >> >> http://old.nabble.com/error-handling-advice-with-queues-tp28005566p28016879.html >> >> Sent from the Camel - Users mailing list archive at Nabble.com. >> >> >> >> >> > >> > >> >> -- >> View this message in context: >> http://old.nabble.com/error-handling-advice-with-queues-tp28005566p28030652.html >> Sent from the Camel - Users mailing list archive at Nabble.com. >> >> > > -- View this message in context: http://old.nabble.com/error-handling-advice-with-queues-tp28005566p28046605.html Sent from the Camel - Users mailing list archive at Nabble.com.