3.3. Configuring a sender endpoint's interaction with the file system
Overview
Sender endpoints interact with the file system in basic ways. You can configure a number of the aspects of this behavior including:
- if the endpoint creates the directory where it writes files
- how the endpoint names temporary files
Directory creation
The default behavior of a sender endpoint is to automatically create the target directory for its files if that directory does not already exist. To configure an endpoint to not create the target directory, you set its
autoCreateDirectory
attribute to false
. If the directory does not exist, the endpoint will do nothing. You will then have to create the directory manually.
Example 3.2, “Sender endpoint that creates its target directory” shows the configuration for a sender endpoint that does not automatically create its target directory.
Example 3.2. Sender endpoint that creates its target directory
<beans xmlns:file="http://servicemix.apache.org/file/1.0"
xmlns:foo="http://servicemix.org/demo/">
<file:sender service="foo:fileSender"
endpoint="fileSender"
directory="outbox"
autoCreateDirectory="false" />
...
</beans>
Appending data
By default, sender endpoints overwrite existing files. If a message wants to reuse the name of an existing file, the file on the file system is overwritten. You can configure a sender endpoint to append the message to the existing file by setting the endpoint's
append
attribute to true.
Example 3.3, “Sender endpoint that appends existing files” shows the configuration for an endpoint that appends messages to a file if it already exists.
Example 3.3. Sender endpoint that appends existing files
<beans xmlns:file="http://servicemix.apache.org/file/1.0"
xmlns:foo="http://servicemix.org/demo/">
<file:sender service="foo:fileSender"
endpoint="fileSender"
directory="outbox"
append="true" />
...
</beans>
Temporary file naming
By default, sender endpoints check the message exchange, or the message itself, for the name to use for the file being written. If the endpoint cannot determine a name for the target file, it will use a temporary file name. Table 3.2, “Attributes used to determine a temporary file name” describes the attributes used to generate the temporary file name.
Note
Checking for the name of the file to write is handled by the marshaler. For more information on marshalers see Chapter 4, File Marshalers.
The generated file names will have the form
tempFilePrefixXXXXXtempFileSuffix
. The five Xs in the middle of the filename will be filled with randomly generated characters. So given the configuration shown in Example 3.4, “Configuring a sender endpoint's temporary file prefix”, a possible temporary filename would be widgets-xy60s.xml
.
Example 3.4. Configuring a sender endpoint's temporary file prefix
<beans xmlns:file="http://servicemix.apache.org/file/1.0"
xmlns:foo="http://servicemix.org/demo/">
<file:sender service="foo:fileSender"
endpoint="fileSender"
directory="outbox"
tempFilePrefix="widgets-" />
...
</beans>