Quick comment: maybe JobEventsPublisher is sufficient (leave "listener" out of that name) and same for the corresponding plugin.