org.hibernate.search.backend.impl.jms
Class JmsBackendQueueProcessor

java.lang.Object
  extended by org.hibernate.search.backend.impl.jms.JmsBackendQueueProcessor
All Implemented Interfaces:
BackendQueueProcessor
Direct Known Subclasses:
JndiJMSBackendQueueProcessor

public abstract class JmsBackendQueueProcessor
extends Object
implements BackendQueueProcessor

Author:
Emmanuel Bernard, Hardy Ferentschik, Sanne Grinovero (C) 2011 Red Hat Inc.

Field Summary
static String JMS_CONNECTION_FACTORY
           
static String JMS_CONNECTION_LOGIN
           
static String JMS_CONNECTION_PASSWORD
           
static String JMS_QUEUE
           
protected static String JNDI_PREFIX
           
 
Constructor Summary
JmsBackendQueueProcessor()
           
 
Method Summary
 void applyStreamWork(LuceneWork singleOperation, IndexingMonitor monitor)
          Applies a single operation on the index, and different operations can be applied in parallel, even in parallel to a workList instance being processed by BackendQueueProcessor.applyWork(List, IndexingMonitor)
 void applyWork(List<LuceneWork> workList, IndexingMonitor monitor)
          Applies a list of operations to the index.
 void close()
          Used to shutdown and eventually release resources.
 Lock getExclusiveWriteLock()
           
 String getIndexName()
           
 QueueConnection getJMSConnection()
           
 Queue getJmsQueue()
           
 String getJmsQueueName()
           
 SearchFactoryImplementor getSearchFactory()
           
 void indexMappingChanged()
          Used to notify the backend that the number or type of indexed entities being indexed in this backend changed.
 void initialize(Properties props, WorkerBuildContext context, DirectoryBasedIndexManager indexManager)
          Used at startup, called once as first method.
protected abstract  QueueConnection initializeJMSConnection(QueueConnectionFactory factory, Properties props)
          Initialises the JMS QueueConnection to be used for sending Lucene work operations to the master node.
protected abstract  Queue initializeJMSQueue(QueueConnectionFactory factory, Properties props)
          Initialises the JMS queue to be used for sending Lucene work operations to the master node.
protected abstract  QueueConnectionFactory initializeJMSQueueConnectionFactory(Properties props)
          Initialises the JMS QueueConnectionFactory to be used for sending Lucene work operations to the master node.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

JNDI_PREFIX

protected static final String JNDI_PREFIX
See Also:
Constant Field Values

JMS_CONNECTION_FACTORY

public static final String JMS_CONNECTION_FACTORY
See Also:
Constant Field Values

JMS_QUEUE

public static final String JMS_QUEUE
See Also:
Constant Field Values

JMS_CONNECTION_LOGIN

public static final String JMS_CONNECTION_LOGIN
See Also:
Constant Field Values

JMS_CONNECTION_PASSWORD

public static final String JMS_CONNECTION_PASSWORD
See Also:
Constant Field Values
Constructor Detail

JmsBackendQueueProcessor

public JmsBackendQueueProcessor()
Method Detail

initialize

public void initialize(Properties props,
                       WorkerBuildContext context,
                       DirectoryBasedIndexManager indexManager)
Description copied from interface: BackendQueueProcessor
Used at startup, called once as first method.

Specified by:
initialize in interface BackendQueueProcessor
Parameters:
props - all configuration properties
context - context giving access to required meta data
indexManager - the index it is related to.

getJmsQueue

public Queue getJmsQueue()

getJmsQueueName

public String getJmsQueueName()

getIndexName

public String getIndexName()

getSearchFactory

public SearchFactoryImplementor getSearchFactory()

applyWork

public void applyWork(List<LuceneWork> workList,
                      IndexingMonitor monitor)
Description copied from interface: BackendQueueProcessor
Applies a list of operations to the index. A single list might be processed by applying elements in parallel threads, but no work should be started on a new workList until the previous one was fully processed. Work could be applied asynchronously according to capabilities and configuration of implementor. A null parameter is not acceptable, implementations should throw an IllegalArgumentException.

Specified by:
applyWork in interface BackendQueueProcessor
Parameters:
workList - list of Lucene work instance which need to be applied to the index
monitor - a IndexingMonitor object.

applyStreamWork

public void applyStreamWork(LuceneWork singleOperation,
                            IndexingMonitor monitor)
Description copied from interface: BackendQueueProcessor
Applies a single operation on the index, and different operations can be applied in parallel, even in parallel to a workList instance being processed by BackendQueueProcessor.applyWork(List, IndexingMonitor)

Specified by:
applyStreamWork in interface BackendQueueProcessor
Parameters:
singleOperation - single Lucene work instance to be applied to the index
monitor - a IndexingMonitor object.

getExclusiveWriteLock

public Lock getExclusiveWriteLock()
Specified by:
getExclusiveWriteLock in interface BackendQueueProcessor
Returns:
a Lock instance which will block index modifications when acquired

indexMappingChanged

public void indexMappingChanged()
Description copied from interface: BackendQueueProcessor
Used to notify the backend that the number or type of indexed entities being indexed in this backend changed. This could trigger some needed reconfiguration.

Specified by:
indexMappingChanged in interface BackendQueueProcessor

getJMSConnection

public QueueConnection getJMSConnection()

close

public void close()
Description copied from interface: BackendQueueProcessor
Used to shutdown and eventually release resources. No other method should be used after this one.

Specified by:
close in interface BackendQueueProcessor

initializeJMSQueueConnectionFactory

protected abstract QueueConnectionFactory initializeJMSQueueConnectionFactory(Properties props)
Initialises the JMS QueueConnectionFactory to be used for sending Lucene work operations to the master node.

Parameters:
props - a Properties object.
Returns:
the initialized javax.jms.QueueConnectionFactory

initializeJMSQueue

protected abstract Queue initializeJMSQueue(QueueConnectionFactory factory,
                                            Properties props)
Initialises the JMS queue to be used for sending Lucene work operations to the master node. Invoked after initializeJMSQueueConnectionFactory(Properties)

Parameters:
factory - a javax.jms.QueueConnectionFactory object.
props - a Properties object.
Returns:
the initialized javax.jms.Queue

initializeJMSConnection

protected abstract QueueConnection initializeJMSConnection(QueueConnectionFactory factory,
                                                           Properties props)
Initialises the JMS QueueConnection to be used for sending Lucene work operations to the master node. This is invoked after #initializeJMSQueue(Properties).

Parameters:
factory - a javax.jms.QueueConnectionFactory object.
props - a Properties object.
Returns:
the initialized javax.jms.QueueConnection


Copyright © 2006-2013 Red Hat Middleware, LLC. All Rights Reserved