[services] caching into a listener, add DataCollector listener, and event dispatcher