Como faço para escrever manuseio fila de mensagens de uma forma orientada a objeto?

StackOverflow https://stackoverflow.com/questions/346105

  •  19-08-2019
  •  | 
  •  

Pergunta

Se você tivesse que escrever um código que leva mensagens de uma fila de mensagens e atualiza uma tabela em um banco de dados, como é que você vai fazer sobre estruturação lo de uma forma boa oo. Como você estruturá-lo? As mensagens são dados XML, um nó por linha na tabela. As linhas na tabela pode ser atualizado, excluído ou inserido.

Foi útil?

Solução

Normalmente com implementações OO de filas de mensagens que você faça as classes que representam os diversos tipos de mensagens mesmo. Na medida em que os diferentes tipos de mensagens que você espera obter são derivados do outro, isso proporciona a sua hierarquia de classes para as mensagens.

Com a configuração baseada persistência estruturas você pode apenas configurar presistence para essas classes diretamente.

Depois, há uma ou mais classes que ouvir a fila de mensagens e apenas persistem as mensagens, provavelmente apenas um. Ele não tem que ser mais elaborado do que isso.

Outras dicas

Eu não acredito que você forneceu informações suficientes para uma boa resposta. O que as mensagens se parece? Será que eles variam em conteúdo / tipo, ou são todos apenas "mensagens"? Eles interagem uns com os outros, ou é apenas uma conversão de formato de dados? Uma das chaves para o desenvolvimento OO é perceber que a "encontrar os substantivos-n-verbos" do jogo (que é o máximo que eu descrevi) raramente leva à melhor solução. Certamente não será o pior, mas você vai acabar com a agregação de dados e um monte de código processual.

código processual não é ruim, no entanto. Por que isso precisa ser OO? Será que o problema em si requerem polimorfismo e ocultamento de dados? Existe algum comportamento complexo que você está tentando modelar? Não há vergonha em usar uma solução não-OO, quando o problema é simples.

A melhor maneira de construir código OO ao fazer mensagens ou lidar com qualquer tipo de middleware é para esconder as APIs de middleware do seu código e apenas lidar com lógica de negócios.

por exemplo. veja estes exemplos

  • POJO Consumir que é muito bonito o caso de uso que você descreve e
  • POJO Producing se alguma vez você precisa enviar mensagens para uma fila de mensagens .

Então você só precisa definir o que o seu Data Transfer Objects olhar como; como você deseja coisas codificar no fio em XML / JSON / whatever.

A grande coisa sobre esta abordagem é o seu código está agora totalmente middleware agnóstico - você poderia trocar sua fila de mensagens e usar um banco de dados ou JavaSpace ou na memória de qualquer outro protocolo de comunicação ou middleware API SEDA ou arquivos ou.

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