I am replacing the use of an executor on ServerSessionHandler by a new
class I just wrote (after some deep technical discussion with
Francesco, to give him the credits)..
ServerSessionHandler is currently creating a new Runnable on every
call made through the PacketHandler...
this is because:
of this method:
@Override
public void handlePacket(final Packet packet) {
channel.confirm(packet);
callExecutor.execute(() -> internalHandlePacket(packet));
}
The new Actor class is similar to an executor, but it varies on the following:
Instead of receiving a Runnable, it receives an argument (or message)
that is then sent to a listener method:
The implementation gets a lot clearer:
@Override
public void handlePacket(final Packet packet) {
channel.confirm(packet);
// This method will call onMessagePacket through an actor
packetActor.sendMessage(packet);
}
And the method is just called without a new Runnable.
Here's the PR: https://github.com/apache/activemq-artemis/pull/1395
--
Clebert Suconic