♻️ (client_listener.rs): make ClientListener trait Send to allow cross-thread usage
✨ (main.rs): implement signal handling for graceful shutdown
♻️ (main.rs): refactor client creation to use Arc<Mutex> for shared state
♻️ (main.rs): add retry logic for persistent connection attempts
♻️ (subscription_listener.rs): make SubscriptionListener trait Send to allow cross-thread usage