If a route is suspended using the ScheduledRoutePolicy and its subclasses (CronScheduledRoutePolicy), it cannot be resumed or started.
Looking at the code in ScheduledRoutePolicy.onJobExecute(), on start/resume actions, the route status is first checked and must be stopped or suspended before any actions is taken.
Suspension of a route, only suspends the consumer and not the route, and hence the start/resume after a suspend does nothing.
One solution could be to also check the status of the consumer on start/resume. This would require adding a isSuspended() to serviceHelper and should be relatively straightforward.