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

Reply via email to