我使用JMX-RMI代理进行消息传递。我有一个java程序,它向一组监听器/监听器发送一个带有名称/id的消息。根据监听器收到的消息,客户端程序表现良好,accordingly.This片段工作正常,但我想知道JMX RMI代理中内置了什么样的容错能力。
如果监听程序意外停止,JMX会重新启动它还是在某个地方记录错误,如果两端的消息队列都已满怎么办?任何解释JMX RMI的底层架构或内置容错机制的文档都将不胜感激。如果它没有任何容错机制,那么什么是一个好的方法呢?
非常感谢
发布于 2011-05-31 21:26:48
我假设您的客户端侦听器正在使用标准的javax.management.remote连接器。如果不进行一些定制,我会说您可以实现一些简单的故障检测。对于容错,您可能正在考虑某种集群解决方案。
您需要关注两个连接层:
对于#1,客户端进程可以使用addConnectionNotificationListener方法向JMXConnector注册NotificationListener。然后,您的本地连接将在以下所有事件中发出JMXConnectionNotification:
这样,您的客户端将知道何时建立了与服务器的连接以及何时断开。
对于#2,它更具体于您的应用程序,但也许您可以采用如下的简单模式:
当您的侦听器/转发器服务启动时,发出启动通知。当它停止时,发出一个停止的通知。注册这些通知的两类监听程序为:
停止客户端,这样它们就知道服务有started/stopped.
这是或多或少你在想的吗?
https://stackoverflow.com/questions/6171440
复制相似问题