camel-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mathieu Lalonde (JIRA)" <j...@apache.org>
Subject [jira] [Issue Comment Edited] (CAMEL-3142) JpaPollingConsumer - So you can more easily work with pollEnrich
Date Mon, 05 Sep 2011 21:13:10 GMT

    [ https://issues.apache.org/jira/browse/CAMEL-3142?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13097140#comment-13097140
] 

Mathieu Lalonde edited comment on CAMEL-3142 at 9/5/11 9:12 PM:
----------------------------------------------------------------

*Status Update* (with less confusion this time)

At the moment I have a JpaPollingConsumer that returns a list of polled entities. It supports
all the PollingConsumer interface returning null when it couldn't poll anything. It supports
maxMessagesPerPoll but maybe it shouldn't since it puts all the entities as a List in one
message.
Here is a snippet that shows how I implemented receive(timeout).  Added delay (consumer.delay
works as well) as an option with 500 ms as default. It is used as well by the ScheduledPolled
JPA consumer.  Let me know if you'd prefer a new option altogether for JpaPollingConsumer.

{code}
    public Exchange receive(long timeout) {
        final StopWatch stopWatch = new StopWatch();
        stopWatch.restart();
        
        List<?> polledEntities = doReceive();
        while (polledEntities == null && stopWatch.taken() < timeout) {
            try {
                Thread.sleep(delay);
                polledEntities = doReceive();
            } catch (InterruptedException e) {
                log.trace("received(long timeout) interrupted after {} ms: Are we stopping:
{}", stopWatch.taken(), isStopping());
            }
        }
        
        return createExchange(polledEntities);
    }
{code}





      was (Author: mrlalonde):
    *Status Update* (with less confusion this time)

At the moment I have a JpaPollingConsumer that returns a list of polled entities. It supports
all the PollingConsumer interface returning null when it couldn't poll anything. It supports
maxMessagesPerPoll.
Here is a snippet that shows how I implemented receive(timeout).  Should I add "pollInterval"
as a configurable option?

{code}
    public Exchange receive(long timeout) {
        final StopWatch stopWatch = new StopWatch();
        stopWatch.restart();
        
        List<?> polledEntities = doReceive();
        while (polledEntities == null && stopWatch.taken() < timeout) {
            try {
                Thread.sleep(pollInterval);
                polledEntities = doReceive();
            } catch (InterruptedException e) {
                log.trace("received(long timeout) interrupted after {} ms: Are we stopping:
{}", stopWatch.taken(), isStopping());
            }
        }
        
        return createExchange(polledEntities);
    }
{code}




  
> JpaPollingConsumer - So you can more easily work with pollEnrich
> ----------------------------------------------------------------
>
>                 Key: CAMEL-3142
>                 URL: https://issues.apache.org/jira/browse/CAMEL-3142
>             Project: Camel
>          Issue Type: New Feature
>          Components: camel-jpa
>    Affects Versions: 2.4.0
>            Reporter: Claus Ibsen
>            Assignee: Mathieu Lalonde
>            Priority: Minor
>             Fix For: 2.9.0
>
>         Attachments: camel-jpa_initialPolish.patch
>
>
> See
> http://fusesource.com/forums/thread.jspa?threadID=2256&tstart=0
> The best solution is to add a JpaPollingConsumer implementation so it works better with
pollEnrich

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message