随着对应用程序的域模型对象的更改,希望让人们了解如何使Lucene索引保持最新状态.
有问题的应用程序是一个使用Hibernate的基于Java/J2EE的Web应用程序.我目前的工作方式是Hibernate映射模型对象都实现了一个通用的"Indexable"接口,它可以返回一组记录在Lucene中的键/值对.每当执行涉及此类对象的CRUD操作时,我都会通过JMS队列将其发送到消息驱动的bean中,该bean在Lucene中记录对象的主键以及从Indexable对象的index()方法返回的键/值对.提供.
我对此方案的主要担忧是,如果MDB落后并且无法跟上即将发生的索引操作,或者某种错误/异常会阻止对象成为索引.结果是排序或长时间段的过期索引.
基本上我只是想知道其他人为这类事情提出了什么样的策略.不一定要寻找一个正确的答案,但我想象一个"白板"的想法列表,让我的大脑思考替代品.