JMS有哪些替代方案?

我们有JMS的替代品吗?

问题陈述我们有一个名为Configuration Manager的组件,它包含应用程序的配置。 此配置管理器由4个应用程序实例使用。 现在,只要管理员更改配置,就应该通知应用程序的所有实例。

这取决于你想要做什么。

  1. 要在同一个jvm中使用,可以使用BlockingQueue
  2. 你可以看看Terracotta的一些共享网络地图,例如

即使在您更新后,您的问题仍然不是很明确。 根据您提供的信息,我看到两个选项:

  • 通知 。 确实使用JMS或其他一些通知机制。 这取决于技术堆栈:它是Web应用程序吗? 桌面应用? 它是否在应用程序服务器中运行?
  • 民意调查 。 每个应用程序都有一个后台线程,用于轮询配置管理器(或数据库?)以进行更改。 检测到更改时,将重新加载整个配置。

对于配置刷新的问题,我宁愿去投票(至少那是我们用于类似要求的,它工作正常)。

因此,您希望在配置管理器中通知4个应用程序实例。

JMS将通知机制解耦,因此不必运行客户端应用程序即可接收通知。 可以在启动时收到通知。

您可以使用JMX,EJB,RMI,Web服务调用或元组空间(例如gigaspaces),但这种情况稍微紧密耦合,因为客户端和服务器都需要处于活动状态才能成功发送通知。

如果需要,可以通过建立收据确认和重新发送function来减轻这种情况。
如果您认为由于应用程序被停止而未通知通知并且知道应用程序在启动时读取配置,则可能没有必要。
但是,这可能并不总是失败的原因,可能是网络故障或其他导致通知失败的错误。
如ew​​ernli所提到的另一种方法是让客户端应用程序定期轮询配置管理器,使用上面提到的任何协议,一旦在轮询周期中识别出更改,就会应用更改。