2012-06-20 136 views
1

我有一个使用Hibernate作为DAL的webservice - 在InnoDB中使用MySql。在多线程环境中休眠

因为我想使Web服务调用真的很短(为了更好的用户体验在客户端)我使用2个线程与消息队列做一些工作。

1个线程在消息中获取userId,从DB加载用户并获取它的电子邮件地址并发送电子邮件给。

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

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

回答

2

Webservice - >消息队列架构非常标准,以防您不需要同步回复Web服务。

在Web服务中,将任何想要存储的数据存储到数据库中,然后消息队列将在稍后选择它。

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

+0

那么,我打电话给sessionFactory,getCurrentSession()。而在cfg文件中线程。我有麻烦了吗? – user1365799