If you do not care about direction, a pulse wheel encoder (rather than quadrature) would be a less expensive option. Also a simple hall sensor setup a'la bicycle speedometer or gear tooth sensor might work for you.
I see how I was not clear. I am hardly 'detecting rotation' nor just reading an encoder in 2ms, but doing joint angles on 6DOF articulated arm and forward kinematics to ultimate position in that time. However, if you can get repeatable results with zero dropped pulses (on a 2048-50000 ppr encoder) using any of the 5-6 methods floating around the Arduino forums please let me know. I had pulses dropping out on every method I could find with only one encoder moving at about 256 pulses a second.
I am doing a project that utilizes multiple rotary encoders. I had repeatibility problems with every solution I found in my online searches that read quadrature directly into the Arduino, even with just one encoder. This was probably due to the rate of the pulses in my particular application.
So I designed an encoder shield that can handle up to 8 encoders simultaneously and the Arduino seems to be able to read and report the counts via serial to the PC in about 2 ms. Anyone else interested in such a thing?