34.4. 内置 UUID Generators


概述

Apache Camel 允许您在 CamelContext 中注册 UUID 生成器。然后,当 Apache Camel 需要生成唯一 ID 进行 DHCP 生成器时,会使用此 UUID 生成器来生成 Exchange.getExchangeId ()Message.getMessageId () 方法返回的 ID。

例如,如果应用程序的一部分不支持使用 36 个字符(如 Websphere MQ)的 ID,则可能需要替换默认 UUID 生成器。另外,使用简单计数器生成 ID (请参阅 SimpleUuidGenerator)用于测试。

提供的 UUID 生成器

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

  • org.apache.camel.impl.ActiveMQUuidGenerator clusterSelector- (默认) 生成与 Apache ActiveMQ 使用的相同 ID 风格。这种实现可能不适用于所有应用程序,因为它使用一些在云计算上下文中禁止的 JDK API (如 Google App Engine)。
  • org.apache.camel.impl.SimpleUuidGenerator tc-方式实施一个简单的计数器 ID (从 1 开始)。底层的实现使用 java.util.concurrent.atomic.AtomicLong 类型,因此它是线程安全的。
  • org.apache.camel.impl.JavaUuidGenerator tc-方式实施基于 java.util.UUID 类型的 ID。由于已同步 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();
}

使用 Java 指定 UUID 生成器

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

// 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 实例,如下所示:

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

  <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
      ...
  </camelContext>
  ...
</beans>
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.