Сейчас опишу задачу вкратце, и сброшу код. Задача следующая:
Есть таблица tasks в которой есть поля input_rows_count и processed_rows_count. Поле input_rows_count обновляется каждый раз, когда задача отправляется в реббит(в консьюмер), processed_rows_count соответственно обновляется когда задача консьюмиться. Поле input_rows_count обновляется последовательно в цикле, ну а processed_rows_count обновляется как только лиснер констюмит таску. И получается так, что input_rows_count != processed_rows_count, так как в один момент времени код пытается обновить processed_rows_count
А используемый уровень изоляции — Read Committed, я так понимаю... извините, я в подобном копаться не люблю. ;)
Но, чтобы Вам кто-то ответил по существу, лучше всё-таки показать \d tasks (или CREATE TABLE + CREATE INDEX), и как-то описать, что за проблемы Вы видите, IMHO.