Domanda

Ecco le specifiche che sto cercando di implementare in breve:

1) Alcuni avvisi devono essere inviati su determinati eventi nell'applicazione.

2) Questi avvisi hanno utenti che si abbonano ad essi.

3) E gli utenti hanno impostato le proprie preferenze di notifica (ad es. e-mail e / o SMS).

Finora non sono stato in grado di trovare una soluzione open source in Java.

Le notifiche JMX sono un'opzione? Più leggo su JMX, più sento che sta cercando di ottenere qualcosa di diverso dal mio problema.

Qualsiasi aiuto sarebbe utile.

È stato utile?

Soluzione

JMX può essere un meccanismo per risolvere questo problema, ma non è la soluzione completa.

JMX fornisce strutture e servizi ai tuoi programmi per consentire ai client di accedere ai dati di monitoraggio e consentire ai clienti di effettuare chiamate di controllo all'applicazione.

Come hai detto, un aspetto di JMX è il sistema di notifica. Ciò che questo sistema fornisce è un'infrastruttura che semplifica la messa a disposizione del client di avvisi e notifiche e le moderne JVM forniscono anche un server JMX gratuito per consentire al client di connettersi all'applicazione in remoto e iscriversi a tali eventi.

Ma è una cosa fare un avviso JMX, ed è un'altra cosa agire completamente su di esso.

Quello che dovresti fare è avere un client JMX, da qualche parte, " iscriviti " alle notifiche JMX dei tuoi programmi e quindi CHE client può agire su tali notifiche inviando e-mail o altro.

Il client JMX può essere un client remoto che comunica con l'applicazione tramite TCP, oppure può essere un client JMX interno all'interno del programma, in esecuzione in un thread, ad esempio, e può agire sulle notifiche.

Quindi, fondamentalmente, JMX fornisce l'idraulica e l'infrastruttura per quello che vuoi fare, ma non lo prende "l'ultimo miglio" per convertire gli avvisi in e-mail.

Come accennato da @fawce, ci sono alcuni "generici" Client JMX di varia raffinatezza che possono agire sui dati JMX e possono fare quello che vuoi (non li conosco, quindi non posso dirlo in prima persona), oppure puoi codificare il tuo sistema per monitorare i dati JMX.

Altri suggerimenti

Se intendi JMX, esiste un bridge JBoss / Nagios chiamato monju che ha un hook JMX generato.

Suggerirei di utilizzare le notifiche JMX e SNMP che dovrebbero supportare il tuo scenario, 2) e 3) coperte dal software SNMP.

Puoi anche codificarlo tu stesso in Java purché tu abbia accesso a un gateway SMS con alcune API. L'uso di javax.mail è semplice fintanto che si ha accesso a un host SMTP che consente l'accesso anonimo. Per connettere 1) e 3) è possibile utilizzare un meccanismo flessibile di abbonamento e pubblicazione per 2).

ecco un buon articolo con un codice di esempio per l'utilizzo di jms nella tua app per generare avvisi testo del link . una volta che hai lavorato con il monitoraggio locale devi impostare -Dom.sun.management.jmxremote.port = 9999 -Dcom.sun.management.jmxremote.authenticate = false -Dcom.sun.management.jmxremote.ssl = false so che è possibile connettersi da un computer remoto. un bel programma semplice per monitorare java abilitato a jmx che può tracciare pagine web di grafici in movimento e avvisi via e-mail quando la modifica delle soglie è testo del link . ti permetterà anche di controllare a distanza le tue app tramite le pagine web. bello e semplice. ovviamente se stai usando jmx puoi facilmente scambiarti per usare qualcosa di più complesso come nagios o qualche costoso strumento commerciale. il punto chiave di quegli strumenti è che hanno un flusso di lavoro, rotas e cose per gestire un grande team di persone che vogliono occuparsi di un sacco di cose (database, server, java, ecc.) - che potrebbe essere troppa complessità se hai appena iniziato con il funzionamento del lato java di jmx.

Solarwinds è uno strumento di monitoraggio di imprese commerciali che ha la capacità di collegarsi a JMX per il monitoraggio. Ha la capacità di generare avvisi via SMS ed e-mail.

Intendi JMS (anziché JMX)? JMS è un'API di messaggistica mentre JMX è un'API di monitoraggio / amministrazione. L'uso di JMS come back-end è un buon modo per implementare i messaggi di back-end, si occuperà del disaccoppiamento, del bilanciamento del carico e della persistenza. Ma devi comunque avere un componente che riceve i messaggi e li invia all'utente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top