Fuse 6 is no longer supported
As of February 2025, Red Hat Fuse 6 is no longer supported. If you are using Fuse 6, please upgrade to Red Hat build of Apache Camel.Ce contenu n'est pas disponible dans la langue sélectionnée.
10.5. File locking
Overview Copier lienLien copié sur presse-papiers!
Copier lienLien copié sur presse-papiers!
It is possible to have multiple instances of a poller endpoint attempting to read a file on the system. To ensure that there are no conflicts in accessing the file, poller endpoints obtain an exclusive lock on a file while it is being processed.
The locking behavior is controlled by an implementation of the
org.apache.servicemix.common.locks.LockManager interface. By default, poller endpoints use a provided implementation of this interface. If the default behavior is not appropriate for your application, you can implement the LockManager interface and configure your endpoints to use your implementation.
Implementing a lock manager Copier lienLien copié sur presse-papiers!
Copier lienLien copié sur presse-papiers!
To implement a custom lock manager, you need to provide your own implementation of the
org.apache.servicemix.common.locks.LockManager interface. The LockManager has single method, getLock() that needs to be implemented. Example 10.8, “The lock manager's get lock method” shows the signature for getLock().
Example 10.8. The lock manager's get lock method
Lock getLock(String id);
The
getLock() method takes a string that represents the URI of the file being processes and it returns a java.util.concurrent.locks.Lock object. The returned Lock object holds the lock for the specified file.
Example 10.9, “Simple lock manager implementation” shows a simple lock manager implementation.
Example 10.9. Simple lock manager implementation
Configuring the endpoint to use a lock manager Copier lienLien copié sur presse-papiers!
Copier lienLien copié sur presse-papiers!
You configure a poller endpoint to use a custom lock manager using its
lockManager attribute. The lockManager attribute's value is a reference to a bean element specifying the class of your custom lock manager implementation.
Example 10.10, “Poller endpoint using a custom lock manager” shows configuration for a poller endpoint that uses a custom lock manager.
Example 10.10. Poller endpoint using a custom lock manager
Note
You can also configure a poller endpoint to use a custom lock manager by adding a child
lockManager element to the endpoint's configuration. The lockManager element simply wraps the bean element that configures the lock manager.