По взаимодействию с БД вариантов не много. В любом случае таску нужно лочить и комплитить во worker id. В целом нужно смотреть по желаемым сценариям. При низкой скорости генерации тасков и допустимом высоком latency можно по таймеру раз в минуту, например, лезть в БД и все выбирать. Сам рест апи, как я уже писал, реализует лонг поллинг, и там не тупой циклический опрос. Грубо говоря, если тасков не хватает на пачку, то поток уводится в park. В engine при создании external task дергается метод fire, который пробуждает тред и он опять идет в БД. Сами хттп запросы при этом стоят в очереди. При это в мультиинстанстной системе к этому сценарию есть вопросы.
Но если нужно пушить в кафку, то это работает норм. Есть поток, который подписывается на событие создания таска, при создании таска он пробуждается, лезет в БД, и пушит зафетченное в кафку. При высокой "плотности" он за раз будет вытягивать больше. И тут нужно именно по профилю нагрузки смотреть какой метод предпочтительнее, чтобы наиболее оптимальное кол-во запросов было.