Я использую Clojure с core.async и имею ситуацию, когда я хочу установить ограничение скорости на количество сообщений, обрабатываемых через канал.
В частности, я хотел бы:
- Определите ограничение скорости, например. 1000 сообщений в секунду
- Обычно обрабатывайте сообщения (и быстро), пока количество сообщений меньше, чем ограничение скорости
- Есть какая-то разумная альтернативная обработка событий, если предел превышен (например, попросить клиента повторить попытку позже)
- Имеют достаточно низкие накладные расходы
Какой лучший способ достичь этого?