Use something like now() to calc the time elapsed after the last event. If the difference is less than 20 ms: Ignore the new event.
Or just wait it out, e.g.:
@Field static Boolean isParsing = false
def parse(...) {
if (isParsing) return
isParsing = true
// do your things here, e.g. fire sendEvent
pauseExecution 20 //ms
isParsing = false
}