以下是我试图简单实现的规范:

1)必须在应用程序中的某些事件上发送一些警报。

2)这些警告让用户订阅它们。

3)用户已设置了自己的通知首选项(例如电子邮件和/或短信)。

到目前为止,我还没能找到Java的开源解决方案。

JMX Notifications是一个选项吗?我对JMX的了解越多,我就越觉得它试图找到与我的问题不同的东西。

任何帮助都会有用。

有帮助吗?

解决方案

JMX可以解决这个问题,但它不是完整的解决方案。

JMX为您的程序提供设施和服务,允许客户端访问监控数据,并允许客户端对应用程序进行控制调用。

正如您所提到的,JMX的一个方面是通知系统。该系统提供的基础设施使您的程序可以轻松地向客户端提供警报和通知,现代JVM还提供免费的JMX服务器,允许客户端远程连接到您的应用程序并订阅这些事件。

但是制作JMX警报是一回事,完全采取行动是另一回事。

你需要做的是在某个地方有一些JMX客户端,<!> quot; subscribe <!> quot;您的程序的JMX通知,然后客户端可以通过发送电子邮件或其他任何方式对这些通知采取行动。

JMX客户端可以是通过TCP与您的应用程序通信的远程客户端,也可以是程序中的内部JMX客户端,例如,在线程中运行,它可以对通知进行操作。

因此,基本上,JMX为您想要做的事情提供管道和基础设施,但不提取<!>“最后一英里<!>”;将警报转换为电子邮件。

正如@fawce所提到的,有一些<!> quot; generic <!> quot;具有各种复杂性的JMX客户端可以根据JMX数据执行操作并且可以执行您想要的操作(我不熟悉它们,所以我不能直接说出来),或者您可以编写自己的系统来监视JMX数据。

其他提示

如果您的意思是JMX,那么有一个名为 monju 的JBoss / Nagios网桥,它具有一个通用的JMX钩子。

我建议使用JMX通知和SNMP,它们应该支持你的场景,2)和3)被SNMP软件覆盖。

只要您可以访问带有某些API的SMS网关,您也可以自己使用Java编写代码。只要您有权访问允许匿名访问的SMTP主机,使用javax.mail就很简单。 2)的灵活发布 - 订阅机制可用于连接1)和3)。

这是一篇很好的文章,其中包含在您的应用中使用jms来提出警报的示例代码链接文本。一旦你使用本地监控,你需要设置-Dom.sun.management.jmxremote.port = 9999 -Dcom.sun.management.jmxremote.authenticate = false -Dcom.sun.management.jmxremote.ssl = false so您可以从远程计算机连接。一个很好的简单程序来监控启用jmx的java,它可以绘制移动图表的网页,并在阈值更改时通过电子邮件发送警报链接文字。它还可以让您通过网页远程控制您的应用程序。好又简单。当然,如果你使用jmx,你可以很容易地交换使用更复杂的东西,如nagios或一些昂贵的商业工具。关于这些工具的关键点在于它们具有工作流和轮换以及管理想要管理大量事物(数据库,服务器,Java等)的大团队的东西 - 如果你刚刚开始,这可能太复杂了让jmx的java端工作。

Solarwinds 是一款商业企业监控工具,能够挂钩进入JMX进行监控。它能够生成SMS和电子邮件警报。

你的意思是JMS(而不是JMX)? JMS是一个消息传递API,而JMX是一个监视/管理API。 使用JMS作为后端是实现后端消息的好方法,它将负责解耦,负载平衡和持久性。但是你仍然必须有一个接收消息的组件并将它们发送给用户。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top