Вы можете использовать очередь, но с некоторыми изменениями. Всякий раз, когда вы хотите добавить в очередь (метод вызывается), вы проверяете, сколько элементов в нем и когда они были добавлены. Все элементы, которые были вставлены более одной секунды назад, могут быть удалены. Сравните количество оставшихся элементов со скоростью в секунду, и вы решите, следует ли отклонить выполнение метода или нет. Это может быть немного сложнее, если вы собираетесь использовать блок метода вместо отклонения.
Вероятно, будет много возможных реализаций, и вы должны проверить, выполнимы ли они для вашей проблемы. Вы также можете взглянуть на реализации сегментов памяти токенов , которые являются общей концепцией вашей проблемы.