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