[ https://issues.apache.org/jira/browse/WSCOMMONS-454?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12694284#action_12694284 ]
Andreas Veithen commented on WSCOMMONS-454: ------------------------------------------- No I didn't start to modify AbstractPollingTransportListener. I only started to think about how to implement this without making the code in AbstractPollingTransportListener (and subclasses) more complex. I started to create an abstraction of the concept of a task group with a completion action (with two implementations: one for a thread pool and one executing the tasks sequentially in a single thread), but I think the code is not complete. > SMTP transport can receive more than one message at same time > ------------------------------------------------------------- > > Key: WSCOMMONS-454 > URL: https://issues.apache.org/jira/browse/WSCOMMONS-454 > Project: WS-Commons > Issue Type: Bug > Reporter: Amila Chinthaka Suriarachchi > Assignee: Asankha C. Perera > Priority: Blocker > Fix For: Transports 1.0 > > > hi all, > recently I started some RM tests with the commons mail transport. > Mail transport listener runs in a timer task. > TimerTask timerTask = new TimerTask() { > @Override > public void run() { > workerPool.execute(new Runnable() { > public void run() { > if (state == BaseConstants.PAUSED) { > if (log.isDebugEnabled()) { > log.debug("Transport " + getTransportName() + > " poll trigger : Transport is > currently paused.."); > } > } else { > poll(entry); > } > synchronized (entry) { > if (!entry.canceled) { > schedulePoll(entry, pollInterval); > } > } > } > }); > } > }; > entry.timerTask = timerTask; > timer.schedule(timerTask, pollInterval) > As I saw timer task only re activates only after earlier invocation finish. > i.e after completing the message. > In RM inorder delivery case lets say we receive message number 2 before 1. > then the initial thread does not return and > it can not receive the message number 1. > I tested this this the following sample. > TimerTask timerTask = new TimerTask(){ > public void run() { > System.out.println("In the timer task"); > try { > Thread.sleep(60000); > } catch (InterruptedException e) { > e.printStackTrace(); //To change body of catch statement > use File | Settings | File Templates. > } > System.out.println("Going out of timer task"); > } > }; > Timer timer = new Timer("Testtimer"); > timer.schedule(timerTask,0, 1000); > And I saw timer task does not run until it finishes the first task. > Can we start a new thread to each new message? That is how earlier SMTP > transport had done that. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.