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.