gpt4 book ai didi

rmi - JMX RMI 代理容错机制

转载 作者:行者123 更新时间:2023-12-02 02:25:24 24 4
gpt4 key购买 nike

我正在使用 JMX-RMI 代理进行消息传递。我有一个 java 程序,它向一组监听器/监听器发送一条具有名称/ID 的消息。根据监听器收到的消息,客户端程序会相应地运行。这篇文章工作正常,但我想知道什么样的容错内置于 JMX RMI 代理中。

如果监听器意外停止,JMX 会重新启动它还是在某处记录错误,如果任一侧的消息队列已满怎么办。任何解释 JMX RMI 的底层架构或内置容错机制的文档都将受到赞赏。如果它没有任何容错机制,那么这样做的好方法是什么。

非常感谢

最佳答案

我假设您的客户端监听器正在使用标准的 javax.management.remote 连接器。如果不进行一些自定义,我会说您可以实现一些简单的故障检测。对于 Fault Tolerance,您可能正在寻找某种集群解决方案。

您需要关注两层连接:

  1. MBeanServerConnection 本身。换句话说,如果整个服务器端 JVM 终止,您的客户端进程需要知道。
  2. 虽然服务器 JVM 和附属 MBeanServerConnection 可能继续可用,但“托管”、监听器/客户端消息转发器服务本身可能会停止/失败/停止。

对于 #1,客户端进程可以注册一个 NotificationListenerJMXConnector使用 addConnectionNotificationListener方法。然后您的本地连接将发出 JMXConnectionNotification以下所有事件:

  • 已打开一个新的客户端连接。
  • 客户端连接已关闭。
  • 客户端连接意外失败。
  • 客户端连接可能丢失了通知。此通知仅出现在客户端。

这样,您的客户端就会知道与服务器的连接何时建立和丢失。

对于 #2,它更适合您的应用程序,但也许您可以采用这样的简单模式:

当您的监听器/转发器服务启动时,发出启动通知。当它停止时,发出停止通知。将注册这些通知的两类听众是:

  1. 客户,因此他们知道服务已启动/停止。
  2. 服务器端“观察者”,可以监听“停止”并重新启动服务。

这或多或少是您的想法吗?

关于rmi - JMX RMI 代理容错机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6171440/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com