I'm not sure if this start() method might throw an exception (or if there is a subsequent close() method), but it might be safer to have a start() method on the pusher itself.  You can annotate it with @LifecycleStart and then when the object is created, add it to the Lifecycle (lifecycle.addManagedInstance()).  You will probably have to add the lifecycle to the method signatures of the initialization code, but a lifecycle object will definitely be available at some layer of the call stack, so it should just be signature adjustments.

I'm working on making this a simpler process...