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
            Priority: Blocker


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.

Reply via email to