我们在我们的云设置上构建了多个可独立部署的基于Lagom的微服务,但是在一些onpremise设置上,在diff中运行多个Lagom服务成为问题。处理。
我们能够通过入侵Play类来在单个进程中运行多个基于Lagom的应用程序,如果通过入侵Play scala启动另一个应用程序,则停止一个应用程序:
val globalApp = app.globalApplicationEnabled
if (globalApp && _currentApp != null && _currentApp.globalApplicationEnabled) {
logger.info("Stopping current application")
stop(_currentApp)
}
我将此更新为:
val globalApp = app.globalApplicationEnabled
if (globalApp && _currentApp != null && _currentApp.globalApplicationEnabled) {
logger.info("Stopping current application")
}
我的问题:这是正确的做法,对拉格姆应用程序或在单一进程中提升多项服务的任何其他方式可能产生的影响
答案 0 :(得分:2)
你不应该需要那个黑客,你应该只能将它添加到你的每个应用程序中application.conf
:
play.allowGlobalApplication = false
这将关闭Play的全局应用程序支持,这意味着在上面的if条件中,globalApp
将为false,因此当您启动第二个应用程序时它不会停止当前应用程序。
如果您在执行此操作时遇到任何问题,例如,如果您遇到有关某些内容正在尝试访问全局应用程序的异常,那么您可能在Lagom和/或Play中发现了一个错误,您可以向其问题跟踪器报告
在一个过程中运行多个Lagom的后果是:
可能还有其他一些事情需要注意,但我现在无法想到它们。