问题
我们的liferay系统是与其他网络应用程序同步数据的基础
我们为此目的使用Model Listeners
通过侦听器进行了大量的Web服务调用和数据库更新,因此liferay中的特定操作太慢了。
例如:
在liferay中添加User
时,我们需要激活许多Web服务调用以添加用户详细信息并使用userdata更新其他系统,还需要一些liferay自定义表。因此添加用户需要花费大量时间,在极少数情况下,请求可能会超时!
由于UserListener
中的代码仅取决于用户详细信息,即使UserListener
中存在任何异常,用户也会在Liferay中添加,我们已经考虑过以下解决方案。
我们在liferay中也有一个调度程序,如果在监听器中执行代码时出现异常,则会修复事情。
建议的解决方案
我们考虑过使用Concurrency API使UserListener
中的代码异步。
所以这是我的问题:
感谢您对此事的任何帮助
答案 0 :(得分:2)
有意义的是,您希望使用并发来解决此问题。
除了对用户体验产生的影响之外,在修改模型的线程中进行密集的工作(如调用Web服务等)并不是一个好主意。
在模型的侦听器中触发线程可能有些复杂且难以维护。
您可以使用Liferay的消息总线范例进行探索,您可以在其中向已断开连接的消息接收器发送消息,然后该消息接收器将执行模型侦听器调用线程之外的所有密集工作。
在此处阅读有关消息总线的更多信息: