You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by souciance <so...@gmail.com> on 2017/06/29 08:29:09 UTC
Re: File consumer exchange fails when async/fire-forget SEDA
subroute fails
What is it exactly that fails? I don't see anywhere in your code where you
invoke a processor? Where exactly does the exception occur?
On Thu, Jun 29, 2017 at 12:18 AM, craig.w [via Camel] <
ml+s465427n5805390h53@n5.nabble.com> wrote:
> Hello all,
>
> I have 2 routes:
> * a file consumer route: that listens for files, validates the file, then
> invokes a processing route
> * a file processing route: that does further processing on the file. The
> processing should NOT affect the file consumer route, therefore, if an
> exception happens while processing File-1, I still want the File-1 exchange
> to appear complete in the file consumer route (e.g.: move to a completed
> subdirectory, per default behavior).
>
> Since this is a lightweight process, I don't want to use jms/activemq, and
> instead have tried async, fire-and-forget, using SEDA. However this does
> not seem to be working.
>
> I've looked thru the docs and the CamelInAction book, and couldn't find
> any documentation on this behavior, so it seems unexpected. I've also tried
> using the SEDA option: waitForTaskToComplete=Never, but it does not work.
>
> See the following test:
> * the fireForget test using a direct endpoint works as expected
> * the fireForget test using the file endpoint FAILS
>
> ---
> public class FileAsyncInOnlyExceptionTest extends CamelTestSupport {
> @Test
> public void directConsumerShouldNotFailWhe
> nSendingFireForgetToViolentAsyncSedaSubRoute() throws Exception {
> //when sending msg to direct consumer
> String result = invokeRoute("direct", "direct:direct");
>
> //then direct is unaffected by boom subRoute
> assertEquals("bar", result);
> }
>
> @Test
> public void fileConsumerShouldNotFailWhenS
> endingFireForgetToViolentAsyncSedaSubRoute() throws Exception {
> //given no files exist
> File fileStart = new File("file");
> deleteDirectory(fileStart);
> assertFileNotExists("file/.error");
>
> //when sending msg to file consumer
> invokeRoute("file", "file:file");
>
> //then file is unaffected by boom subRoute
> assertFileNotExists("file/.error");
> }
>
> private String invokeRoute(String routeId, String endpointUri) {
> NotifyBuilder notifyRouteDone = new NotifyBuilder(context).
> fromRoute(routeId).whenDone(1).create();
> NotifyBuilder notifyBoom = new NotifyBuilder(context).
> fromRoute("boom").whenFailed(1).create();
>
> String result = template.requestBody(endpointUri, "foo",
> String.class);
>
> assertTrue("should get the boom", notifyBoom.matches(6,
> TimeUnit.SECONDS));
> assertTrue("route should be done", notifyRouteDone.matches(6,
> TimeUnit.SECONDS));
>
> return result;
> }
>
>
> @Override
> protected RoutesBuilder createRouteBuilder() throws Exception {
> return new RouteBuilder() {
> @Override
> public void configure() throws Exception {
> from("direct:direct").routeId("direct")
> .log("hello from direct")
> .inOnly("seda:boom")
>
> .log("goodbye from direct")
> .setBody(constant("bar"));
>
> from("file:file?moveFailed=.error").routeId("file")
> .log("hello from file")
> .setExchangePattern(ExchangePattern.InOnly)
> .inOnly("seda:boom")
>
> .log("goodbye from file")
> .setBody(constant("bar"));
>
> from("seda:boom").routeId("boom")
> .log("hello... evil impending boom")
> .delay(2500)
> .throwException(new RuntimeException("boom goes
> the dynamite"));
> }
> };
> }
> }
>
> ------------------------------
> If you reply to this email, your message will be added to the discussion
> below:
> http://camel.465427.n5.nabble.com/File-consumer-exchange-
> fails-when-async-fire-forget-SEDA-subroute-fails-tp5805390.html
> To start a new topic under Camel - Users, email ml+s465427n465428h31@n5.
> nabble.com
> To unsubscribe from Camel - Users, click here
> <http://camel.465427.n5.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=465428&code=c291Y2lhbmNlLmVxZGFtLnJhc2h0aUBnbWFpbC5jb218NDY1NDI4fDE1MzI5MTE2NTY=>
> .
> NAML
> <http://camel.465427.n5.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml>
>
--
View this message in context: http://camel.465427.n5.nabble.com/File-consumer-exchange-fails-when-async-fire-forget-SEDA-subroute-fails-tp5805390p5805408.html
Sent from the Camel - Users mailing list archive at Nabble.com.