Opa galera,
Estou com uma dúvida aqui e queria me aproveitar um pouco da experiência e conhecimentos alheios pra solucionar ela.
Atualmente, trabalho com servidores de aplicações financeiras que fazem trocas de mensagens via socket puro. Esses servidores são acessados por vários clientes diferentes, desde POS (aquelas máquinas onde você passa o seu cartão de crétido) a PCs comuns com o sistema rodando lá.
Além desses casos dos clientes que se conectam diretamente eu também posso ter o que nós chamamos de “concentradores”, que é uma segunda aplicação servidora que recebe as conexões de outros clientes e a partir de uma única conexão socket repassa todas essas mensagens pro meu servidor.
Todas essas mensagens contam com a identificação do real cliente (o POS ou o PC lá do outro lado), mesmo que ela tenha passado por um concentrador, então seu sempre sei exatamente de quem ela veio.
Através dessas informações, eu crio contexos para que essas mensagens possam ser processadas, pois a maioria delas funciona em um modo de “envio-resposta-confirmação”, então eu tenho sempre que manter o estado no qual cada uma das transações parou para que seja possível receber uma mensagem de confirmação na transação correta. No caso, eu tenho uma multiplexação lógica de uma única conexão socket, já que o que me interessa não é quem está conectado e sim as mensagens que estão chegando.
Bem, explicado o cenário, eu gostaria de saber se alguém aí que mexe com servidores de mensagens baseados em JMS, como o AtiveMQ, suportariam um cenário como esse, principalmente quando os formados das mensagens são diversos. Em alguns momentos, eu tenho um mesmo servidor trantando mensagens em formato CSV, XML e ISO 8583, logicamente as mensagens tem as mesmas informações e chegam sempre pelo socket, mas o formato que elas chegam é completamente diferente.
Essas ferramentas de mensageria são realmente flexíveis o bastante pra resolver o meu problema ou eu realmente tenho um problema específico demais e vou ter que desenvolver tudo “na raça” mesmo?