2013-12-13 3 views
0

흐름 실행 중에 페이로드 상태가 유지되도록하는 가장 좋은 방법은 무엇입니까? 다중 데이터베이스 및 웹 서비스 실행을 수행하는 흐름이 있지만 커넥터 실행을 수행 할 때마다 페이로드가 손실됩니다. 이것을 유지하기 위해. 상태를 유지하기 위해 모든 커넥터 실행이 메시지가 더 많은 범위에서 수행되고 이러한 아웃 바운드 커넥터의 응답이 변수로 채워집니다. 이것들은 완전한 기억의 낭비라고 생각하지만.뮬 흐름 실행 중 페이로드 상태 유지

친절히 조언하십시오.

관련 는 산토

답변

1

당신이 flowVars에 넣어 didnt는 경우 이러한 다른 DB/WS 호출의 결과 일 것입니다 무엇? 어디에서 그들을 붙들고 싶습니까?

원본 페이로드를 잃어 버리지 않으려면 MessageEnricher를 사용하는 것이 좋습니다.

각 enricher의 결과를 vars에 넣지 않으려면 메시지 페이로드 자체에 추가 할 수 있습니다.

<enricher source="#[message.payload]" target="#[message.payload.enricherResult]" doc:name="Message Enricher"> 

당신이 페이로드 원을 유지하고자한다면, 당신은 키와지도로 이동할 수 : 페이로드 맵의 인스턴스 또는 세터와 POJO 인 경우, 당신은 단순히 enrichers이 같이 결과를 추가 할 수 있습니다 "원본"또는 무언가를 선택한 다음 각 엔리치어 결과를 새 키로 추가하십시오.

어느 쪽이든 각 엔리치어 결과를 유지하려고한다는 사실은 아마도 flowVars에 넣든지 페이로드 자체에 넣든 상관없이 동일한 양의 메모리가 사용되고 있다는 것을 의미합니다.

0

DB 호출이나 외부 서비스 호출 전에 메시지 페이로드를 일부 변수에 저장하십시오.
나중에 변수에서 값을 검색하여 페이로드로 설정할 수 있습니다.

관련 문제