Fuse Mediation Router enables you to register a UUID generator in the CamelContext
. This
UUID generator is then used whenever Fuse Mediation Router needs to generate a unique ID—in
particular, the registered UUID generator is called to generate the IDs returned by the
Exchange.getExchangeId()
and the Message.getMessageId()
methods.
For example, you might prefer to replace the default UUID generator, if part of your
application does not support IDs with a length of 36 characters (like Websphere MQ). Also,
it can be convenient to generate IDs using a simple counter (see the
SimpleUuidGenerator
) for testing purposes.
You can configure Fuse Mediation Router to use one of the following UUID generators, which are provided in the core:
org.apache.camel.impl.ActiveMQUuidGenerator
—(Default) generates the same style of ID as is used by Apache ActiveMQ. This implementation might not be suitable for all applications, because it uses some JDK APIs that are forbidden in the context of cloud computing (such as the Google App Engine).org.apache.camel.impl.SimpleUuidGenerator
—implements a simple counter ID, starting at1
. The underlying implementation uses thejava.util.concurrent.atomic.AtomicLong
type, so that it is thread-safe.org.apache.camel.impl.JavaUuidGenerator
—implements an ID based on thejava.util.UUID
type. Becausejava.util.UUID
is synchronized, this might affect performance on some highly concurrent systems.
To implement a custom UUID generator, implement the
org.apache.camel.spi.UuidGenerator
interface, which is shown in Example 1.5. The generateUuid()
must be implemented
to return a unique ID string.
Example 1.5. UuidGenerator Interface
// Java package org.apache.camel.spi; /** * Generator to generate UUID strings. */ public interface UuidGenerator { String generateUuid(); }
To replace the default UUID generator using Java, call the
setUuidGenerator()
method on the current CamelContext
object.
For example, you can register a SimpleUuidGenerator
instance with the current
CamelContext
, as follows:
// Java getContext().setUuidGenerator(new org.apache.camel.impl.SimpleUuidGenerator());
Note | |
---|---|
The |
To replace the default UUID generator using Spring, all you need to do is to create an
instance of a UUID generator using the Spring bean
element. When a
camelContext
instance is created, it automatically looks up the Spring
registry, searching for a bean that implements
org.apache.camel.spi.UuidGenerator
. For example, you can register a
SimpleUuidGenerator
instance with the CamelContext
as
follows:
<beans ...> <bean id="simpleUuidGenerator" class="org.apache.camel.impl.SimpleUuidGenerator" /> <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring"> ... </camelContext> ... </beans>