3

问题

我们的 Liferay 系统是与其他 Web 应用程序同步数据的基础。
我们Model Listeners为此目的使用。
通过侦听器有很多 Web 服务调用和数据库更新,因此 Liferay 中的特定操作太慢了。

例如:在 liferay 中 添加时,User我们需要触发大量 Web 服务调用来添加用户详细信息并使用用户数据更新其他系统,以及一些 liferay 自定义表。因此,添加用户需要花费大量时间,并且在极少数情况下,请求可能会超时!
由于其中的代码UserListener仅依赖于用户详细信息,即使有任何异常UserListener仍然会在 Liferay 中添加用户,所以我们想到了以下解决方案。

我们在 Liferay 中还有一个调度程序,如果在侦听器中执行代码时出现异常,它会修复问题。

建议的解决方案

UserListener我们考虑使用并发 API使代码异步。

所以这是我的问题:

  1. 是否建议在模型侦听器中使用并发代码?
  2. 如果是,那么如果我们也通过此代码更新 Liferay 自定义表,例如事务或其他内容,是否会产生不利影响?
  3. 这种方法的其他一般优点和缺点是什么?
  4. 有没有其他更好的方法可以在不影响用户体验的情况下实时更新其他系统?

感谢您对此事的任何帮助

4

1 回答 1

2

你想使用并发来解决这个问题是有道理的。

除了对用户体验产生影响之外,在修改模型的线程中执行密集工作(例如调用 Web 服务等)并不是一个好主意。

在模型的侦听器中触发线程可能有些复杂且难以维护。

您可以探索使用 Liferay 的消息总线范例,您可以将消息发送到断开连接的消息接收器,然后该接收器将在模型侦听器的调用线程之外完成所有密集工作。

在此处阅读有关消息总线的更多信息:

  1. 消息总线开发人员指南
  2. 消息总线维基
于 2013-06-18T17:44:18.170 回答