以下是我试图简单实现的规范:
1)必须在应用程序中的某些事件上发送一些警报.
2)这些警报让用户订阅它们.
3)用户已设置自己的通知首选项(例如电子邮件和/或短信).
到目前为止,我还没能找到Java的开源解决方案.
JMX Notifications是一个选项吗?我对JMX的了解越多,我就越觉得它试图实现与我的问题不同的东西.
任何帮助都会有用.
JMX可以是解决此问题的机制,但它不是完整的解决方案.
JMX为您的程序提供设施和服务,以允许客户端访问监视数据以及允许客户端对应用程序进行控制调用.
如您所述,JMX的一个方面是通知系统.该系统提供的是基础架构,使您的程序可以轻松地向客户端提供警报和通知,现代JVM还提供免费的JMX服务器,允许客户端远程连接到您的应用程序并订阅这些事件.
但是制作JMX警报是一回事,完全采取行动是另一回事.
您需要做的是在某个地方安装一些JMX客户端,"订阅"您的程序的JMX通知,然后客户端可以通过发送电子邮件或其他任何方式对这些通知采取行动.
JMX客户端可以是通过TCP与您的应用程序通信的远程客户端,也可以是程序中的内部JMX客户端,例如,在线程中运行,它可以对通知进行操作.
因此,基本上,JMX为您想要做的事情提供管道和基础设施,但不会将警报转换为电子邮件的"最后一英里".
正如@fawce所提到的,有一些不同复杂程度的"通用"JMX客户端可以对JMX数据起作用,可以做你想做的事情(我不熟悉它们,所以我不能直接说),或者你可以编写代码您自己的系统来监控JMX数据.