我正在使用 JMX-RMI 代理进行消息传递。我有一个 java 程序,它向一组侦听器/侦听器发送一条具有名称/id 的消息。基于侦听器收到的消息,客户端程序的行为相应。这件作品很好,但我想知道是什么样的JMX RMI 代理中内置了容错功能。
如果侦听器意外停止,JMX 是否会重新启动它或在某处记录错误,如果任一侧的消息队列已满怎么办。任何解释 JMX RMI 的底层架构或内置容错机制的文档都将受到赞赏。如果它没有任何容错机制,那将是一个好的方法。
非常感谢
我假设您的客户端侦听器正在使用标准的javax.management.remote连接器。如果没有一些定制,我想说你可以实现一些简单的故障检测。对于容错,您可能正在寻找某种集群解决方案。
您需要关注两层连接:
对于 #1,客户端进程可以使用addConnectionNotificationListener方法向JMXConnector注册NotificationListener 。然后,您的本地连接将在以下所有事件上发出JMXConnectionNotification :
这样,您的客户端将知道何时建立和丢失与服务器的连接。
对于#2,它对您的应用程序更具体一些,但也许您可以采用这样的简单模式:
当您的侦听器/转发器服务启动时,发出启动通知。当它停止时,发出停止通知。注册这些通知的两类监听器是:
这或多或少是你在想的吗?