Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

ActiveMQ - Disponibilidade

Olá.

Primeiramente eu gostaria de parabenizá-los pelo conteúdo do curso, realmente fiquei bastante satisfeito com o conteúdo e didática aplicada.

Muito provavelmente irei aplicar esta solução de integração em um cenário que tenho em mãos, mas fiquei apenas com "receio" sobre a disponibilidade do ActiveMQ.

No meu cenário de integração, o sistema A deve enviar todo e qualquer recurso financeiro lançado para um outro sistema B. O motivo para isto é que o sistema B trabalha com uma "descentralização" deste recurso. Ou seja, todo recurso lançado no sistema A deve ser enviado para o sistema B para sua devida descentralização.

Com isto em mente, devo ter em mãos a garantia de entrega da mensagem, com persistência das mensagens e até mesmo uso de prioridade e autenticação.

No caso citado, acredito que o número de mensagens enviadas é realmente baixo (100 por hora), mas o que devemos fazer caso na tentativa de envio da mensagem do sistema A para ActiveMQ aconteça um problema?

Exemplo: Sistema A envia a mensagem para o ActiveMQ, porém o ActiveMQ está offline. O que o sistema A deve fazer? Dar rollback na transação?

Na verdade não sei nem se a preocupação deveria ser no sistema A dar rollback na transação quando o ActiveMQ estiver indisponível, talvez devo pensar nisto como uma exceção rara, e me preocupar com clustering deste ActiveMQ, o que vocês acham? Seria o caso onde mesmo com poucas requisições seria ideal o clustering devido a necessidade de garantia de entrega da mensagem?

Muito obrigado.

http://activemq.apache.org/clustering.html

2 respostas
solução!

Olá José,

Eu acredito que você tenha dois caminhos a seguir:

1- Caso o MOM esteja indisponível, você pode fazer o rollback da operação e informar o usuário que o sistema está indisponível.

2- Você poderia salvar essas mensagens em memória e quando o MOM estiver disponível novamente você enviaria todas as mensagens pendentes.

Eu acredito que seria mais prudente utilizar a primeira opção, já que se o MOM estiver fora, há algum errado com o sistema e alguém precisa verificar. A segunda opção pode mascarar o problema no MOM, por isso seria interessante criar algum mecanismo para notifica-lo quando houver falha. Qual opção você irá escolher dependerá da sua necessidade de disponibilidade.

Obrigado Denis!