Preciso criar uma fila para processar registros que estao gravados em um banco de dados.
Tenho uma tabela que recebe varios inserts por segundo e esta tabela tem um campo ativo com o valor 0 por default.
Preciso criar um processo “batch” que leia um numero X de processos, execute um-a-um e ao final atualize o campo ativo=1 para que ele nao mais seja processado.
O problema que encontro eh como controlar a fila. Se eu definir, por exemplo, que vou processar 100 registros simultaneamente nao posso esperar para processar novos registros apenas quando esses 100 terminarem (a preformance seria muito ruim visto que o tempo de cada processo pode variar). Assim que um processo terminar (ou um numero Y de processos) quero colocar mais registros na fila sem processar um mesmo registro mais de uma unica vez.
Sua flag “ativo” poderia ter uma outra opção de valor que diria que está sendo processado, por exemplo -1. Assim quando o batch for escolher ele só deverá pegar os que tiverem valor 0, e sempre que ele pegar o 100 que deverão ser executados, ele antes faz um update colocando valor -1.