| [[UuidGenerator-UuidGenerator]] |
| = UuidGenerator |
| |
| Starting with *Camel 2.5*, Camel supports 3rd party UUID generator(s). |
| This is useful, if e.g. your messaging provider does not support UUID's |
| with a length of 36 characters (like Websphere MQ). Another useful |
| scenario is to use a simple counter for testing purpose. With this it is |
| easier to correlate the exchanges in the log/debugger. |
| |
| Camel uses UUIDs in the exchange and message ids, and other unique ids |
| it uses. |
| |
| You only have to implement `org.apache.camel.spi.UuidGenerator` and tell |
| Camel, that it should use your custom implementation: |
| |
| [[UuidGenerator-ConfiguringfromJavaDSL]] |
| == Configuring from Java DSL |
| |
| [source,java] |
| ----------------------------------------------------------- |
| getContext().setUuidGenerator(new MyCustomUuidGenerator()); |
| ----------------------------------------------------------- |
| |
| Warning: You should not change the UUID generator at runtime (it should only be |
| set once)! |
| |
| [[UuidGenerator-ConfiguringfromSpringDSL]] |
| == Configuring from Spring DSL |
| |
| Camel will configure this UUID generator by doing a lookup in the Spring |
| bean registry to find the bean of the type |
| `org.apache.camel.spi.UuidGenerator`. |
| |
| [source,java] |
| --------------------------------------------------------------------------------------- |
| <bean id="activeMQUuidGenerator" class="org.apache.camel.impl.ActiveMQUuidGenerator" /> |
| |
| <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring"> |
| <route> |
| <from uri="direct:start" /> |
| <to uri="mock:result" /> |
| </route> |
| </camelContext> |
| --------------------------------------------------------------------------------------- |
| |
| [[UuidGenerator-Providedimplementations]] |
| == Provided implementations |
| |
| Camel comes with three implementations of |
| `org.apache.camel.spi.UuidGenerator`: |
| |
| * `org.apache.camel.impl.JavaUuidGenerator` - This implementation uses |
| `java.util.UUID`. The `java.util.UUID` is synchronized and can therefore |
| affect performance on high concurrent systems. Therefore consider one of |
| the generators. |
| * `org.apache.camel.impl.SimpleUuidGenerator` - This implementation use |
| internally a `java.util.concurrent.atomic.AtomicLong` and increase the |
| ID for every call by one. Starting with 1 as the first id. |
| * `org.apache.camel.impl.ActiveMQUuidGenerator` - This implementation |
| use the ActiveMQ style of ID's. This implementation may use some APIs |
| from the JDK which is forbidden to use if running in the cloud (such as |
| Google App Engine) and therefore you may have to use one of the other |
| generators. |
| |
| [[UuidGenerator-ActiveMQUuidGenerator]] |
| == ActiveMQUuidGenerator |
| |
| From *Camel 2.10.7/2.11.1* onwards the JVM system property with key: |
| `activemq.idgenerator.port` can be used to assign a specific port which |
| is used during initialization of the UUID generator. By default the port |
| number 0 is used. Though in some cloud infrastructures this is not |
| allowed, and thus a specific port can be assigned instead. |
| |
| [[UuidGenerator-Thedefaultgenerator]] |
| == The default generator |
| |
| * From Camel 2.5 onwards the `ActiveMQUuidGenerator` is the default |
| generator because its the fastest. |
| * In Camel 2.4 or older the default is the `JavaUuidGenerator` |
| generator. |