34.4. built-In UUID Generators


概述

Apache Camel 允许您在 CamelContext 中注册 UUID 生成器。然后,每当 Apache Camel 需要生成唯一的 ID iwl-setuptoolsin 特别时使用此 UUID 生成器,以生成由 Exchange.getExchangeId ()Message.getMessageId () 方法返回的 ID。

例如,如果应用程序的一部分不支持 ID 为 36 个字符,您可能希望替换默认 UUID 生成器(如 Websphere MQ)。另外,还可以方便地使用简单的计数器(请参阅 SimpleUuidGenerator)生成 ID 用于测试目的。

提供的 UUID 生成器

您可以将 Apache Camel 配置为使用以下 UUID 生成器之一,这些生成器在内核中提供:

  • org.apache.camel.impl.ActiveMQUuidGenerator criu- (Default) 生成与 Apache ActiveMQ 使用相同的 ID 样式。这个实现可能不适用于所有应用程序,因为它使用一些在云计算环境中禁止的 JDK API (如 Google App Engine)。
  • 从 1 开始,org.apache.camel.impl.SimpleUuidGenerator criu- iwl implementations 是一个简单计数器 ID,从 1 开始。底层实施使用 java.util.concurrent.atomic.AtomicLong 类型,使其成为 thread-safe。
  • org.apache.camel.impl.JavaUuidGenerator criu-wagonimplements ID 基于 java.util.UUID 类型。由于 java.util.UUID 同步,这可能会影响某些高并发系统上的性能。

自定义 UUID 生成器

要实现自定义 UUID 生成器,请实施 org.apache.camel.spi.UuidGenerator 接口,其显示在 例 34.5 “UuidGenerator 接口” 中。必须实施 generateUuid () 来返回唯一 ID 字符串。

例 34.5. UuidGenerator 接口

// Java
package org.apache.camel.spi;

/**
 * Generator to generate UUID strings.
 */
public interface UuidGenerator {
    String generateUuid();
}
Copy to Clipboard Toggle word wrap

使用 Java 指定 UUID 生成器

要使用 Java 替换默认 UUID 生成器,请在当前 CamelContext 对象上调用 setUuidGenerator () 方法。例如,您可以使用当前的 CamelContext 注册 SimpleUuidGenerator 实例,如下所示:

// Java
getContext().setUuidGenerator(new org.apache.camel.impl.SimpleUuidGenerator());
Copy to Clipboard Toggle word wrap
注意

在激活任何路由 之前,应该在启动时调用 setUuidGenerator () 方法。

使用 Spring 指定 UUID 生成器

要使用 Spring 替换默认 UUID 生成器,您需要做的是使用 Spring bean 元素创建 UUID 生成器的实例。创建 camelContext 实例时,它会自动查找 Spring registry,搜索实现 org.apache.camel.spi.UuidGenerator 的 bean。例如,您可以使用 CamelContext 注册 SimpleUuidGenerator 实例,如下所示:

<beans ...>
  <bean id="simpleUuidGenerator"
        class="org.apache.camel.impl.SimpleUuidGenerator" />

  <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
      ...
  </camelContext>
  ...
</beans>
Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat