【问题标题】:What are the alternatives of JMS? [closed]JMS 的替代品有哪些? [关闭]
【发布时间】:2010-06-07 17:29:31
【问题描述】:

我们有任何替代 JMS 的方法吗?

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

【问题讨论】:

    标签: java jms


    【解决方案1】:

    这取决于你想做什么。

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

    【讨论】:

    【解决方案2】:

    即使在您更新之后,您的问题仍然不是很清楚。鉴于您提供的信息,我看到了两个选项:

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

    对于配置刷新的问题,我宁愿去轮询(至少那是我们用于类似需求并且效果很好的)。

    【讨论】:

      【解决方案3】:

      所以您想在配置管理器中通知 4 个应用程序实例的更改。

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

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

      如果需要,可以通过内置确认接收和重新发送功能来缓解这种情况。
      如果您假设由于应用程序停止并且知道应用程序在启动时读取配置而导致通知未通过,则可能没有必要。
      但是,这可能并不总是导致失败的原因,它可能是网络故障或其他导致通知失败的错误。
      正如 ewernli 所提到的,另一种方法是让客户端应用程序定期轮询配置管理器,使用上述任何协议,然后在轮询周期中识别出更改后立即应用。

      【讨论】:

        猜你喜欢
        • 2011-02-19
        • 2010-10-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多