This new flow removes the 'optimization' of reading the lock columns and data columns in the same call as well as acking and popping in the same call.  This ends up adding latency when accessing the queue in additional to losing atomicity of locking and popping.  We need to find a generic way to have code re-use between the internal lock and external lock without loosing this property.