JavaFX com MySQL em WebService

0 respostas
webservicejavamysql
JuniorMaia

Fala pessoal, tudo bom?
To com um novo projeto na pauta que vou precisar desenvolver um sistema desktop com JavaFX.

O sistema funciona da seguinte forma:

a) 1 app para Android e iOS (já desenvolvidos) onde o usuário faz pedidos de produtos;
b) 1 webservice em PHP com MySQL para ler e armazenar os dados.
c) aqui entra o sistema desktop para ler os pedidos feitos no app e imprimir um cupom fiscal.

A e B estão prontos e funcionando, os pedidos são feitos no app, comunica via json com o ws e grava os dados na base.

Agora eu preciso imprimir um cupom fiscal na máquina local dos clientes.
Basicamente é um sistema como o iFood, onde uma via do cupom fica com o estabelecimento (onde o sistema desktop será instalado) e outra via vai com o motoboy para o usuário que fez o pedido.

Até aqui nenhum novidade, porém, temos uma particularidade: o estabelecimento precisa aceitar esse pedido feito pelo usuário no app em apenas 4 minutos, ou seja, o usuário manda um pedido pro banco de dados, e o estabelecimento precisa aprovar nesse tempo máximo, caso contrário o pedido é cancelado automaticamente no webservice para que o usuário não espere muito tempo pela confirmação do pedido por parte do estabelecimento.

O iFood tem um sistema chamado iConnect que faz exatamente isso, ele é instalado nos restaurantes e fica lendo a base de dados para ver se tem algum pedido novo e informar na tela do estabelecimento que há u pedido a ser atendido.

Eu criei um sistema de teste em JavaFX aqui na minha máquina local para ler os pedidos da base de dados. Eu faço uma requisição no webservice levando o código do cliente e retorno um json com os pedidos, caso houver. Funciona bem. Mas eu não posso ficar fazendo requisição a cada 20 segundos, por exemplo, para ver se tem pedidos novos, pq isso tem causado travamento no sistema Java.
Como o sistema vai rodar em Windows, sabemos que tem várias situações onde o sistema operacional já é lento por si só, que a máquina do cliente não tem muita memória, CPU, conexão com a internet ruim e etc… Esses fatores tem complicado minha vida, pq não posso aumentar o tempo de requisição para 1 minuto, por exemplo, pois seriam 4 requisição apenas, antes do WS cancelar o pedido.

Tive pesquisando também sobre limites de tarefas assíncronas no Java, parece que há um limite na JVM (não tenho certeza), o que também me trás problemas, pq tem estabelecimentos que vão logar as 8 da manhã e sair as 23:00, ou seja, o sistema precisa rodar o dia todo fazendo requisições.

Eu não sei se essas requisições de tempos em tempos (curtos) com Timer, trazendo um json com os pedidos postados, é a melhor solução…

Então pergunto aos senhores:

Qual é a melhor forma de fazer com que esse sistema JavaFX receba os pedidos postados pelo usuário no app, da maneira mais rápida possível?

Criado 4 de agosto de 2017
Respostas 0
Participantes 1