On 6/30/11 6:49 PM, gil alvarez wrote:
Hi, have a question about message ordering. I want to insure that messages
are received in order by my application.
I'm using mina on the client, as well as on the server, so i want to insure
that if the client sends message M1 followed by M2, that the server receives
M1 followed by M2; specifically, that the SessionHandler receives calls on
the same thread for the same IoSession.
The server is a multi-processor box, so i configure the acceptor with N
threads, since there may be multiple sessions involved.
So if on the client i do (in the same thread):
session.write( msg1 );
session.write( msg2 );
Am i correct in assuming that the SessionHandler will receive the messages
in order (on the same thread)?
There are really 2 questions here: will the mina layer on the client push
msg1 through the socket first, then msg2; and then will the server receive
them in order.
There are two answers.
First, assuming you have not configured anything specific in MINA (like
added an ExecutorFilter), the messages will be sent and received in
order. The reason is that we associated one single IoProcessor per
session, so every message belonging to a session will be processed one
after the other by one unique thread.
Now, if you have added an ExecutorFilter, that will be a different
story, unless you used an OrderedExecutorFilter.
Hope it helps.
--
Regards,
Cordialement,
Emmanuel Lécharny
www.iktek.com