34.4. 내장된 UUID 생성기
34.4.1. 개요
Apache Camel을 사용하면 CamelContext
에서 UUID 생성기를 등록할 수 있습니다. 그런 다음 이 UUID 생성기는 Apache Camel이 고유한 ID 전환이 필요할 때마다 등록된 UUID 생성기가 호출되어 Exchange.getExchangeId()
및 Message.getMessageId()
메서드에서 반환한 ID를 생성합니다.
예를 들어 애플리케이션의 일부가 ID를 36자(예: Websphere MQ)로 지원하지 않는 경우 기본 UUID 생성기를 교체할 수 있습니다. 또한 테스트를 위해 간단한 카운터( SimpleUuidGenerator
참조)를 사용하여 ID를 생성하는 것이 편리합니다.
34.4.2. 제공된 UUID 생성기
코어에 제공되는 다음 UUID 생성기 중 하나를 사용하도록 Apache Camel을 구성할 수 있습니다.
-
org.apache.camel.impl.ActiveMQUuidGenerator
Cryostat- (Default) 는 Apache ActiveMQ에서 사용하는 것과 동일한 ID 스타일을 생성합니다. 이 구현은 클라우드 컴퓨팅 (예: Google App Engine) 컨텍스트에서 금지되는 일부 JDK API를 사용하므로 모든 애플리케이션에 적합하지 않을 수 있습니다. -
org.apache.camel.impl.SimpleUuidGenerator
Cryostat-WITHimplements a simple counter ID, starting at1
. 기본 구현은 스레드로부터 안전하도록java.util.concurrent.atomic.AtomicLong
유형을 사용합니다. -
org.apache.camel.impl.JavaUuidGenerator
Cryostat- functionimplements an ID based on thejava.util.UUID
type.java.util.UUID
가 동기화되므로 일부 고도의 동시 시스템의 성능에 영향을 미칠 수 있습니다.
34.4.3. 사용자 정의 UUID 생성기
사용자 지정 UUID 생성기를 구현하려면 예 34.5. “UuidGenerator Interface” 에 표시된 org.apache.camel.spi.UuidGenerator
인터페이스를 구현합니다. generateUuid()
는 고유한 ID 문자열을 반환하도록 구현되어야 합니다.
예 34.5. UuidGenerator Interface
// Java package org.apache.camel.spi; /** * Generator to generate UUID strings. */ public interface UuidGenerator { String generateUuid(); }
34.4.4. Java를 사용하여 UUID 생성기 지정
Java를 사용하여 기본 UUID 생성기를 교체하려면 현재 CamelContext
오브젝트에서 setUuidGenerator()
메서드를 호출합니다. 예를 들어 다음과 같이 현재 CamelContext
에 SimpleUuidGenerator
인스턴스를 등록할 수 있습니다.
// Java getContext().setUuidGenerator(new org.apache.camel.impl.SimpleUuidGenerator());
setUuidGenerator()
메서드는 시작 중에 경로가 활성화되기 전에 호출되어야 합니다.
34.4.5. Spring을 사용하여 UUID 생성기 지정
Spring을 사용하여 기본 UUID 생성기를 교체하려면 Springans 요소를 사용하여 UUID 생성기 인스턴스를 생성하는 것입니다
. camelContext
인스턴스가 생성되면 Spring 레지스트리를 자동으로 조회하여 org.apache.camel.spi.UuidGenerator
. 예를 들어 다음과 같이 CamelContext
에 SimpleUuidGenerator
인스턴스를 등록할 수 있습니다.
<beans ...> <bean id="simpleUuidGenerator" class="org.apache.camel.impl.SimpleUuidGenerator" /> <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring"> ... </camelContext> ... </beans>