【发布时间】:2010-06-07 17:29:31
【问题描述】:
我们有任何替代 JMS 的方法吗?
问题陈述 我们有一个名为 Configuration Manager 的组件,其中包含应用程序的配置。此配置管理器由应用程序的 4 个实例使用。现在,每当管理员更改配置时,它都应该收到应用程序的所有实例的通知。
【问题讨论】:
我们有任何替代 JMS 的方法吗?
问题陈述 我们有一个名为 Configuration Manager 的组件,其中包含应用程序的配置。此配置管理器由应用程序的 4 个实例使用。现在,每当管理员更改配置时,它都应该收到应用程序的所有实例的通知。
【问题讨论】:
这取决于你想做什么。
【讨论】:
即使在您更新之后,您的问题仍然不是很清楚。鉴于您提供的信息,我看到了两个选项:
对于配置刷新的问题,我宁愿去轮询(至少那是我们用于类似需求并且效果很好的)。
【讨论】:
所以您想在配置管理器中通知 4 个应用程序实例的更改。
JMS 将通知机制解耦,因此客户端应用程序不必为了接收通知而运行。他们可以在启动时收到通知。
您可以使用 JMX、EJB、RMI、Web 服务调用或元组空间(如 gigaspaces),但这种耦合稍微紧密一些,因为客户端和服务器都需要处于活动状态才能成功发送通知。
如果需要,可以通过内置确认接收和重新发送功能来缓解这种情况。
如果您假设由于应用程序停止并且知道应用程序在启动时读取配置而导致通知未通过,则可能没有必要。
但是,这可能并不总是导致失败的原因,它可能是网络故障或其他导致通知失败的错误。
正如 ewernli 所提到的,另一种方法是让客户端应用程序定期轮询配置管理器,使用上述任何协议,然后在轮询周期中识别出更改后立即应用。
【讨论】: