Package com.easydesk.lucene.om
Class AsyncOmIndexer
java.lang.Object
com.easydesk.lucene.om.AsyncOmIndexer
- All Implemented Interfaces:
ObjectIndexer
OM 저장 시점에 받은 객체를 모아 두었다가 주기적으로 (
easydesk.lucene.om.index-delay, 기본 1초) index 한다.
기존 lucene.AttributeValueListener 를 대체한다. 바로 index 하지 않는 이유:
- 새로운 Item 은 ItemActivitySet 이 저장되기 전에 AttributeValue 가 먼저 저장되므로 그 시점에는 생성자/생성일을 구할 수 없다.
- OM 저장(DB transaction) 을 index 오류나 지연으로 방해하지 않는다.
주의 : DB transaction 이 rollback 되어도 이미 queue 에 들어간 객체는 index 된다. (다음 저장 시 다시 교체된다.)
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionAsyncOmIndexer(OmIndexer omIndexer, boolean enabled) Creates a new AsyncOmIndexer. -
Method Summary
-
Field Details
-
MAX_RETRY
public static final int MAX_RETRY실패 시 재시도 횟수- See Also:
-
-
Constructor Details
-
AsyncOmIndexer
public AsyncOmIndexer(OmIndexer omIndexer, @Value("${easydesk.lucene.om.index-enabled:true}") boolean enabled) Creates a new AsyncOmIndexer.- Parameters:
omIndexer- 실제 index 를 수행한다.enabled-easydesk.lucene.om.index-enabled(기본 true), false 이면 아무것도 하지 않는다.
-
-
Method Details
-
index
Description copied from interface:ObjectIndexerOM 이 생성/변경/삭제(removed) 되었음을 알린다. 구현에 따라 즉시 또는 나중에 index 된다.- Specified by:
indexin interfaceObjectIndexer- Parameters:
om- 도메인 객체
-
pending
public int pending()- Returns:
- queue 에 남아 있는 객체 수
-
flush
@Scheduled(fixedDelayString="${easydesk.lucene.om.index-delay:1000}", initialDelayString="${easydesk.lucene.om.index-delay:1000}") public int flush()queue 에 있는 객체를 index 한다.- Returns:
- index 에 성공한 객체 수
-
close
종료 전에 남아 있는 객체를 index 한다. (LuceneSearchService보다 먼저 종료된다.)
-