Your approach is generally sound, but the synchronous call to "adminClient.listTopics().names().get()" blocks the scheduler’s thread—due to Kafka’s retry and timeout mechanisms—when Kafka is down. This blocking prevents subsequent scheduled runs. To fix this, consider reducing Kafka timeouts, using asynchronous calls, or configuring your scheduler with a thread pool. For tests, you might also mock the AdminClient or adjust timeouts to avoid long blocking periods.