Luc*_*ano 5 java transactions acid hibernate-search infinispan
我有以下设置:
Infinispan作为二级缓存很好,不需要恢复,并且由于Cache的性质,您可以读取自己事务中的更改.
在阅读源代码几小时后,当我更新实体时,Hibernate Search不会更新Lucene目录,但是在事务结束时(如果它提交),所以我想搜索我刚刚更新的文本,在同一笔交易里面,我不能吗?
但是,在事务完成后,Hibernate Search会在不同的线程中对Directory进行更新.因此,如果其中一个目录更新失败,那么Lucene将与我的实体不一致?如果在将更新发送到目录并且需要恢复之前发生了某些事情,这些更新是否会丢失?
假设此"第一"事务成功提交,更新将发送到Infinispan目录.这里将开始一项新交易.通过谁?Lucene可以选择使用JMS发送更新.假设选项已激活,因此JMS消息初始化新事务.
Infinispan将使用它接收的更新修改其内存目录,但是在提交后,持久的CacheStore将在此事务完成时再次更新.因此,如果在更新jdbc CacheStore时发生某些事情,它将有可能没有更新,但Infinispan Memory Directory将应用它们.
我的问题是,考虑到我使用的所有模块都支持事务,并且他们甚至支持加入全局事务(XA),是否有办法实现真正的事务性?也许我只是没有看到它.
小智 0
我正在研究一个非常相似的设置。对于这些版本,真正的事务性是不可能的。有几个原因,您已经注意到其中一些原因:
这里事务阶段很重要,因为最终插入数据库需要在事务主体中完成并在最后提交。
我的解决方案是忽略索引更新的事务性,在我的情况下这并不是绝对必要的。
| 归档时间: |
|
| 查看次数: |
1211 次 |
| 最近记录: |