У нас есть проблема дизайна, где ситуация выглядит следующим образом:
Есть несколько производителей и несколько потребителей (в одной очереди).
Каждое сообщение представляет задачу с параметрами, которые должен обрабатывать потребитель.
Проблема в том, что есть определенные задачи, которые занимают много памяти (и мощности процессора), и мы знаем, что потребитель не способен справиться с этим. хорошо то, что мы знаем, сколько памяти (и мощности процессора) он может приблизительно забрать заранее, поэтому мы могли бы запретить потребителю выполнить эту задачу и дать изменение другому потребителю с достаточным объемом памяти для обработки.
Существует настройка предварительной выборки, но я не вижу, как она может быть настроена для удовлетворения этого требования
Наконец, я нашел вариант откат транзакции, поэтому потребитель может в основном проверить, достаточно ли у него аппаратных ресурсов для обработки задачи, и если нет, то откат, который возвращает сообщение обратно в очередь, позволяя следующему потребителю принять это и так далее.
Не уверен, что это правильный подход или есть лучший способ?