Pregunta

Aquí están las especificaciones que estoy tratando de implementar en pocas palabras:

1) Algunas alertas deben enviarse en ciertos eventos en la aplicación.

2) Estas alertas tienen usuarios que se suscriben a ellas.

3) Y los usuarios han establecido sus propias preferencias de notificación (por ejemplo, correo electrónico y / o SMS).

No he podido encontrar una solución de código abierto en Java hasta ahora.

¿Las notificaciones JMX son una opción? Cuanto más leo sobre JMX, más siento que está tratando de lograr algo diferente a mi problema.

Cualquier ayuda sería útil.

¿Fue útil?

Solución

JMX puede ser un mecanismo para resolver este problema, pero no es la solución completa.

JMX proporciona instalaciones y servicios a sus programas para permitir que los clientes accedan a los datos de monitoreo y también para que los clientes puedan realizar llamadas de control a la aplicación.

Como mencionó, un aspecto de JMX es el sistema de notificación. Lo que este sistema proporciona es infraestructura para facilitar que su programa ponga alertas y notificaciones a disposición de los clientes, y las JVM modernas también proporcionan un servidor JMX gratuito para permitir que el cliente se conecte a su aplicación de forma remota y se suscriba a esos eventos.

Pero una cosa es hacer una alerta JMX, y otra completamente distinta es actuar sobre ella.

Lo que debe hacer es tener un cliente JMX, en algún lugar, "suscribirse". a las notificaciones JMX de sus programas, y luego ESE cliente puede actuar sobre esas notificaciones enviando correos electrónicos, o lo que sea.

El cliente JMX puede ser un cliente remoto que habla con su aplicación a través de TCP, o puede ser un cliente JMX interno dentro del programa, ejecutándose en un hilo, por ejemplo, y puede actuar sobre las notificaciones.

Entonces, básicamente, JMX proporciona la plomería y la infraestructura para lo que desea hacer, pero no lo toma "la última milla". para convertir alertas en correos electrónicos.

Como @fawce mencionó, hay algunos "genéricos" Clientes JMX de diversa sofisticación que pueden actuar sobre los datos JMX y pueden hacer lo que usted desea (no estoy familiarizado con ellos, así que no puedo decirlo de primera mano), o puede codificar su propio sistema para monitorear los datos JMX.

Otros consejos

Si te refieres a JMX, hay un puente JBoss / Nagios llamado monju que tiene un gancho JMX genérico.

Sugeriría usar notificaciones JMX y SNMP que deberían admitir que su escenario, 2) y 3) esté cubierto por el software SNMP.

También puede codificarlo usted mismo en Java siempre que tenga acceso a una puerta de enlace SMS con alguna API. Usar javax.mail es sencillo siempre que tenga acceso a un host SMTP que permita el acceso anónimo. Se puede utilizar un mecanismo flexible de publicación-suscripción para 2) para conectar 1) y 3).

aquí hay un buen artículo con código de muestra para utilizar jms en su aplicación para generar alertas texto del enlace . una vez que tenga que trabajar con la supervisión local, debe configurar -Dom.sun.management.jmxremote.port = 9999 -Dcom.sun.management.jmxremote.authenticate = false -Dcom.sun.management.jmxremote.ssl = false so que puedes conectar desde una máquina remota. un programa simple y agradable para monitorear Java habilitado para jmx que puede trazar páginas web de gráficos en movimiento y enviar alertas por correo electrónico cuando los umbrales cambian es texto del enlace . También le permitirá controlar remotamente sus aplicaciones a través de las páginas web. Agradable y simple. por supuesto, si está utilizando jmx, puede cambiar fácilmente para usar algo más complejo, como nagios o alguna herramienta comercial costosa. Los puntos clave sobre esas herramientas es que tienen flujo de trabajo, rotaciones y cosas para administrar a un gran equipo de personas que desean cuidar muchas cosas (bases de datos, servidores, Java, etc.), lo que puede ser demasiado complejo si recién comienza con conseguir que el lado java de jmx funcione.

Solarwinds es una herramienta comercial de monitoreo empresarial que tiene la capacidad de conectarse a JMX para monitoreo. Tiene la capacidad de generar alertas por SMS y correo electrónico.

¿Te refieres a JMS (en lugar de JMX)? JMS es una API de mensajería, mientras que JMX es una API de supervisión / administración. Usar JMS como back-end es una buena manera de implementar los mensajes de back-end, se encargará de la separación, el equilibrio de carga y la persistencia. Pero aún debe tener un componente que reciba los mensajes y los envíe al usuario.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top