1

我有一个使用 Hibernate 作为 DAL 的网络服务 - 使用 MySql 和 InnoDB。

因为我想让 Web 服务调用非常短(为了在客户端获得更好的用户体验),所以我使用 2 个线程和 msg 队列来做一些工作。

1个线程在消息中获取userId,从数据库加载用户并获取电子邮件地址并将电子邮件发送到。

第二个线程是这样使用的:Webservice call....做一些动作。将 ActivityLog 添加到数据库中。做 session.save(log); session.commit(); 现在我们使用 logId 向线程发送消息。收到消息 - 将新条目插入时间线表(用户 ID、日志 ID)。会话是不同于主逻辑会话对象的会话对象。

我应该有这方面的问题吗?在延迟加载?在线程中,因为消息是在 commit() 之后发送到线程的?

4

1 回答 1

2

如果您不需要对 Web 服务进行同步回复,Webservice -> 消息队列架构是相当标准的。

在 Web 服务中,将您想要的任何内容存储到数据库中,然后消息队列将获取这些内容。

不同的会话不是问题,但是如果这些线程中的每一个都有一个静态会话,它们可能会受到会话膨胀的影响:对象堆积在会话缓存中。有关此的更多信息:http: //suryagaddipati.wordpress.com/2008/02/15/hibernate-rich-clients-and-long-running-sessions/

于 2012-06-20T17:11:38.957 回答