Pergunta

O aplicativo de servidor web vai lidar com trabalhos que são solicitados por solicitações de API REST.

O ideal seria se as matrizes de servidor durante um trabalho (ou seja: plugue puxado), o trabalho deve continuar ou reiniciar na inicialização.

Uma maneira muito conveniente para processar estes trabalhos é em um segmento separado usando algumas das classes de utilitários concorrentes em Java 5. O único problema é, dado um fracasso, você precisa ter escrito os detalhes do trabalho e criar um processo que lê esses detalhes na inicialização e retoma os trabalhos. Esta parece ser uma dor de fazer.

Uma abordagem alternativa é usar uma fila onde o usuário faz pedido, nós escrevemos para a fila, em seguida, ler a partir de fila e executar o trabalho e só remover a mensagem quando o trabalho for concluído. Isto torna mais fácil para retomar o trabalho no arranque como o servidor irá apenas ler a partir da fila na inicialização e retomar o processo.

Há algum melhores abordagens a este cenário?

Foi útil?

Solução

Uma vez que você tenha especificado REST, você obviamente tem clientes que fazem pedidos e exigem resultados. Por que não colocar o ônus de determinar se eles já concluída em os próprios clientes .

por exemplo. um cliente faz um pedido. Se ele recebe uma volta resultado, tudo muito bem. Se, no entanto, o cliente detecta que o servidor tenha ido feito (através de uma desconexão prematura na conexão HTTP), então ele pode recuar e tente novamente mais tarde. Se desejar, você pode implementar várias estratégias de repetição (por exemplo repetição em um host diferente, desistir depois 'n' tentativas etc.).

Desta forma, os clientes manter o conhecimento de que eles exigem (como eles devem fazer de qualquer maneira, presumivelmente) e seus servidores são apátridas, que é muito mais fácil de gerir.

Outras dicas

Eu usaria Quartz (que tem fail-over capacidades) para gerir os seus postos de trabalho.

PS: Eu prefiro estar errado, mas, depois de ler suas últimas perguntas, eu tenho a sensação de que você está construindo algo demasiado complicada ou conceitualmente errado. Há apenas muitos arquitetura cheira IMHO.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top