34.4. built-In UUID Generators
概述 复制链接链接已复制到粘贴板!
Apache Camel 允许您在 CamelContext 中注册 UUID 生成器。然后,每当 Apache Camel 需要生成唯一 ID 确认时,调用该 UUID 生成器来生成 Exchange.getExchangeId() 和 Message.getMessageId() 方法返回的 ID。
例如,如果应用程序的一部分不支持 ID 且长度为 36 个字符(如 Websphere MQ),则您可能更愿意替换默认的 UUID 生成器。另外,使用简单计数器生成 ID 可以方便(请参阅 SimpleUuidGenerator)进行测试。
提供的 UUID 生成器 复制链接链接已复制到粘贴板!
您可以将 Apache Camel 配置为使用以下 UUID 生成器之一,该生成器在内核中提供:
-
org.apache.camel.impl.ActiveMQUuidGeneratorabrt- (默认) 生成与 Apache ActiveMQ 使用的相同 ID 样式。这种实现可能不适用于所有应用程序,因为它使用云计算环境中禁止的一些 JDK API(如 Google App Engine)。 -
org.apache.camel.impl.SimpleUuidGeneratorKUBECONFIG-KUBECONFIGimplements a simple counter ID,从1开始。底层实施使用java.util.concurrent.atomic.AtomicLong类型,因此它是 thread-safe。 -
org.apache.camel.impl.JavaUuidGenerator>_<-sHistoryLimit 实施基于java.util.UUID类型的 ID。由于java.util.UUID已同步,因此可能会影响某些高度并发系统的性能。
自定义 UUID 生成器 复制链接链接已复制到粘贴板!
要实施自定义 UUID 生成器,请实施 org.apache.camel.spi.UuidGenerator 接口,它出现在 例 34.5 “UuidGenerator 接口” 中。必须实施 generateUuid() 才能返回唯一 ID 字符串。
例 34.5. UuidGenerator 接口
使用 Java 指定 UUID 生成器 复制链接链接已复制到粘贴板!
要使用 Java 替换默认 UUID 生成器,请调用当前 CamelContext 对象上的 setUuidGenerator() 方法。例如,您可以使用当前的 CamelContext 注册 SimpleUuidGenerator 实例,如下所示:
// Java getContext().setUuidGenerator(new org.apache.camel.impl.SimpleUuidGenerator());
// Java
getContext().setUuidGenerator(new org.apache.camel.impl.SimpleUuidGenerator());
在激活任何路由 前,应在启动时调用 setUuidGenerator() 方法。
使用 Spring 指定 UUID 生成器 复制链接链接已复制到粘贴板!
要使用 Spring 来替换默认 UUID 生成器,您要做的都是使用 Spring bean 元素创建 UUID 生成器实例。创建 camelContext 实例时,它会自动查找 Spring registry,搜索实施 org.apache.camel.spi.UuidGenerator 的 Bean。例如,您可以使用 CamelContext 注册 SimpleUuidGenerator 实例,如下所示: