Pergunta

Aqui estão as especificações que estou tentando implementar em poucas palavras:

1) Alguns alertas devem ser enviados em determinados eventos no aplicativo.

2) Esses alertas fazem com que os usuários se inscrevam neles.

3) e os usuários definiram suas próprias preferências de notificação (por exemplo, email e/ou SMS).

Não consegui encontrar uma solução de código aberto em Java até agora.

O JMX Notifications é uma opção? Quanto mais eu leio sobre o JMX, mais sinto que está tentando alcançar algo diferente do meu problema.

Qualquer ajuda seria util.

Foi útil?

Solução

O JMX pode ser um mecanismo para resolver esse problema, mas não é a solução completa.

A JMX fornece instalações e serviços aos seus programas para permitir que os clientes acessem dados de monitoramento, além de permitir que os clientes façam chamadas de controle para o aplicativo.

Como você mencionou, um aspecto do JMX é o sistema de notificação. O que esse sistema fornece é a infraestrutura para facilitar a disponibilização de alertas e notificações do seu programa, e os JVMs modernos também fornecem um servidor JMX gratuito para permitir que o cliente se conecte ao seu aplicativo remotamente e assine esses eventos.

Mas uma coisa é fazer um alerta de JMX, e outra é completamente agir sobre isso.

O que você precisaria fazer é ter algum cliente JMX, em algum lugar, "assine" as notificações JMX de seus programas e, em seguida, esse cliente pode agir sobre essas notificações enviando e -mails ou qualquer outra coisa.

O cliente JMX pode ser um cliente remoto conversando com seu aplicativo via TCP, ou pode ser um cliente JMX interno dentro do programa, em execução em um thread, digamos, e pode atuar nas notificações.

Então, basicamente, o JMX fornece o encanamento e a infraestrutura para o que você deseja fazer, mas não o leva a "a última milha" para converter alertas em e -mails.

Como @fawce mencionou, existem alguns clientes JMX "genéricos" de várias sofisticação que podem agir com dados JMX e podem fazer o que você deseja (não estou familiarizado com eles, então não posso dizer em primeira mão), ou você pode codificar Seu próprio sistema para monitorar os dados JMX.

Outras dicas

Se você quer dizer JMX, há uma ponte JBoss/Nagios chamada Monju que tem um gancho JMX generalizado.

Eu sugeriria o uso de notificações JMX e SNMP, que devem apoiar seu cenário, 2) e 3) sendo cobertos pelo software SNMP.

Você também pode codificá -lo em Java, desde que tenha acesso a um gateway SMS com alguma API. O uso de javax.mail é simples, desde que você tenha acesso a um host SMTP, permitindo acesso anônimo. Um mecanismo flexível de inscrição de publicação para 2) pode ser usado para conectar 1) e 3).

Aqui está um bom artigo com código de amostra para usar o JMS em seu aplicativo para levantar alertas Texto do link. Depois de trabalhar com o monitoramento local, você precisa definir o -dom.sun.management.jmxremote.port = 9999 -dcom.sun.management.jmxRemote.authenticate = false -dcom.sun.management.jmxRemote.ss = false So que você pode se conectar a partir de uma máquina remota. Um bom programa simples para monitorar JMX habilitado Java, que pode plotar as páginas da mudança de gráficos e enviar alertas por e -mail quando os limiares mudam Texto do link. Ele também permitirá que você controla seus aplicativos remotos por meio das páginas da web. bom e simples. Obviamente, se você estiver usando o JMX, poderá trocar facilmente para usar algo mais complexo, como Nagios ou alguma ferramenta comercial cara. Os principais pontos sobre essas ferramentas são que eles têm fluxo de trabalho, rotas e outras coisas para gerenciar uma grande equipe de pessoas querendo cuidar de muitas coisas (bancos de dados, servidores, java, etc.) - o que pode ser muita complexidade se você está apenas começando Com o trabalho de Java do Java funcionando.

Solarwinds é uma ferramenta comercial de monitoramento empresarial que tem a capacidade de conectar -se ao JMX para monitoramento. Ele tem a capacidade de gerar SMS e alertas de e -mail.

Você quer dizer JMS (em vez de JMX)? O JMS é uma API de mensagens, enquanto o JMX é uma API de monitoramento/administração. Usando o JMS como back-end é uma boa maneira de implementar as mensagens de back-end, ele cuidará de decoupagem, balanceamento de carga e persistência. Mas você ainda precisa ter um componente que receba as mensagens e enviá -las para o usuário.

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