public abstract void ProcessMessage(BaseComponentMessage msg);
bool TryReadMessage(out BaseComponentMessage msg) => messageQueue.TryDequeue(out msg);
public override void ProcessMessage(BaseComponentMessage msg) { }
public void SendMessage(BaseComponentMessage msg) => messageQueue.Enqueue(msg);