Pessoal, estou com o seguinte problema:
Um sistema deve realizar operações (cálculos e relatórios contábeis) para empresas. A ordem de execução deve ser a ordem de chegada (fila FIFO – First In First Out)
Imaginei que poderia resolver este problema usando JMS. Consumir uma mensagem por vez parece ser simples, no entanto a intenção é, enquanto uma operação para a empresa A é realizada, outra thread realize para a empresa B.
Não posso iniciar uma thread para cada mensagem, pois se estiver realizando uma operação para a empresa A, não posso realizar outra operação para a empresa A concorrentemente. Porem, eu poderia realizar uma operação para uma empresa B. Ou seja, eu gostaria que as operações sobre empresas diferentes fossem executadas concorrentemente, mas para uma mesma empresa as operações precisam ser realizadas pela ordem de chegada (fila FIFO).
Uma solução seria um consumidor de mensagens para cada empresa, mas parece inviável, pois o número de empresas pode crescer.
Alguém tem uma idéia diferente para permitir a concorrência entre empresas, mas garantir a unicidade de operações para uma empresa? Será que JMS não ajuda mesmo a resolver este problema? Alguma Sugestão?
Toda ajuda é bem vinda
