camel-jms using spring jms does not support batch for transactions.
Its consuming a single message at a time.

camel-sjms has batch support on the consumer. You may take a look at
http://camel.apache.org/sjms


On Fri, Dec 6, 2013 at 2:36 AM, kraythe . <[email protected]> wrote:
> I have a route that I will past below. The route is transacted and I want
> it to read off a queue and then batch the records into a file. However, if
> someone murders the server with kill -9 prior to the file being written, I
> would like all of those records to end up back in the queue to be processed
> next time the server goes up. That is not the behavior we are seeing. If we
> kill the server any records in transit are gobbled and dropped and the file
> not written. What are we doing wrong? Note this is a method that generates
> routes for us when we call it. Thanks a bunch:
>
>   protected void publishExcelFileForRecordQueue(final String queue,
> finalString routeID,
> final String path,
>
>       final long batchcompletionTimeout, final Comparator<Record> sorter,
> final MappedExcelDataFormat medf, final String fileNameExpr) {
>
>     from(endpointAMQ(queue)) // Consume routed cases
>
>         .routeId(routeID) // Route Id for this route.
>
>         
> .onException(Exception.class).useOriginalMessage().handled(true).maximumRedeliveries(0)
> // catch exceptions
>
>         .setHeader(Exchange.FAILURE_ROUTE_ID, property(Exchange.
> FAILURE_ROUTE_ID)) // set route that errored
>
>         .setHeader(Exchange.EXCEPTION_CAUGHT, simple(
> "${exception.stacktrace}")) // Store reason for error
>
>         .to(ExchangePattern.InOnly,
> endpointAMQ(QUEUE_CASE_AUTOMATION_DEAD)).end()
> // to DLQ
>
>         .transacted(KEY_TXPOLICY_REQUIRED) // make the route transacted
>
>         .unmarshal(new JacksonDataFormat(this.jacksonMapper, Record.class)) //
> unmarshal from JSON
>
>         .aggregate(constant(true), newRecordListAggregationStrategy(sorter)) 
> //
> Aggregate and sort records.
>
>         .completionTimeout(batchcompletionTimeout) // Make as single report
>
>         .marshal(medf) // Write the agregated exchanges to excel
>
>         .to("file:" + path + "?fileName=" + fileNameExpr +
> "&tempPrefix=.medf.").id("file_writer") // write the data to the file.
>
>         .end();
>
>   }
>
> }
>
> *Robert Simmons Jr. MSc. - Lead Java Architect @ EA*
> *Author of: Hardcore Java (2003) and Maintainable Java (2012)*
> *LinkedIn: **http://www.linkedin.com/pub/robert-simmons/40/852/a39
> <http://www.linkedin.com/pub/robert-simmons/40/852/a39>*



-- 
Claus Ibsen
-----------------
Red Hat, Inc.
Email: [email protected]
Twitter: davsclaus
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen

Reply via email to