2014-12-16 2 views
1

를 변경하는 방법은 다음 코드 조각 한 :헤더 요소

<int:header-enricher id="Channel Name Setter"> 
    <int:header name="channel.id" value="CYCLE"/> 
    <int:header name="flow.id" overwrite="true" value="#{T(hu.telekom.fdl.util.TimeBasedUUIDGenerator).generateId()}"/> 
</int:header-enricher> 

문제는 그 나는 비록 :

<int-file:inbound-channel-adapter id="filteredFiles" 
    directory="#{controllerConfig['CYCLE'].params['SEMAPHORE_DIR']}" 
    channel="semaphoreChannel" filename-pattern="*.xml" prevent-duplicates="false"> 
    <int:poller max-messages-per-poll="1" cron ="#{controllerConfig['CYCLE'].controllerTimer}"/> 
</int-file:inbound-channel-adapter> 
가 ... 이후의 흐름 은 헤더 enricher이를 overwrite = "true"속성을 사용했습니다. flow.id은 inbound-channel-adapter가 두 번째 파일을 읽을 때 변경되지 않은 것처럼 보입니다.

감사합니다, 형태 #{...}

답변

1

표현은 문맥을 초기화하는 동안, 한 번만 평가됩니다.

<int:header name="flow.id" overwrite="true" expresion="T(hu.telekom.fdl.util.TimeBasedUUIDGenerator).generateId()"/> 

expression=를 사용하고 #{}를 제거 : 당신은 런타임 표현을 사용해야합니다.

헤더가 이미 더 많은 인바운드 메시지에있는 경우에만 overwrite="true" 만 있으면됩니다.

관련 문제