我已使用共享存储将 activeMQ 设置为主/从配置,以实现数据的高可用性。我的应用程序使用 ActveMQ 的 REST API 使用来自 activemq 的消息。如何配置我的系统,以便这些 REST API 调用也遵循主/从故障转移策略。 以下链接提到的一种解决方案是使用第三方负载均衡器。
Failover support for activemq REST api
但我更愿意在使用负载均衡器之前探索任何可用的配置选项。
我能找到的解决方法是
- 从 ActiveMQ 的嵌入式 jetty 服务器复制并部署 API Web 应用程序和库,并将其作为 WAR 部署在独立的 JETTY 服务器上。
- 修改 API Web 应用程序的 web.xml,以将故障转移 URL 作为上下文参数传递org.apache.activemq.brokerURL
- 我的应用程序现在与此 jetty 服务器通信,该服务器又将请求路由到 ActiveMQ。
我将 API Web 应用程序复制到单独的服务器的原因是,嵌入式 Jetty 服务器优先考虑其自己的代理而不是 servlet 上下文参数。
是否有一些配置可以确保嵌入式 jetty 服务器选择故障转移 URL,或者是否有更好的方法来处理具有故障转移支持的 Rest 调用?
最佳答案
只要运行jetty服务器的两个副本,您的解决方案似乎是合理的,不会造成单点故障。
实际上,您仍然可以使用 AMQ 嵌入式 jetty ,但只需更改部署的应用程序即可。这样,您将拥有两台服务器。这也需要在它们前面有一个负载均衡器,但对于高可用的 Web 解决方案来说总是如此。
关于java - 如何启用 activemq Rest Api 以支持使用共享存储的主/从配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32369695/