A 1000 line encoder using interrupts on a 30RPM shaft can deliver 2kHz pulses/sec by triggering on all 4 rising and falling changes of the A&B signal lines, and you can trim it down to 1kHz by configuring the interrupts to just trigger on A changes or 500Hz with just A falling. At 30000RPM, you could use and ABZ encoder and switch over to triggering off of the index pulse, or run the AB signals through a divider. With some adaptive coding and a 1000PPR ABZ encoder you could handle a range from 15RPM to 30000RPM with interrupts between 1kHZ to 30kHz with some tradeoffs between resolution and speed. With some hardware dividers you could extend that RPM coverage further.