[CAMEL] Processing

.·2021년 12월 11일
0

CAMEL

목록 보기
4/5

Transformation과 Processing의 차이점

  • Transformation
    • 바디 메시지를 변환하는 작업
    • transformation 이후 바디 메시지가 변환됨
  • Processing
    • 바디 메시지를 변환하지 않고 어떠한 작업을 수행

bean 메소드를 이용한 Processing

@Component
public class ProcessingUsingBeanMethod extends RouteBuilder {
	
	// Bean 주입받기
	@Autowired
	private SimpleLoggingProcessingComponent loggingComponent;

	@Override
	public void configure() throws Exception {
		
		// 1) starting end point 정의
		from("timer:nyj-timer") // null
		.log("${body}")
		// 2) bean({클래스객체명})
		.bean(loggingComponent) // null
		.log("${body}")
		// 3) ending end point 정의
		.log("log:nyj-log");
	}
	
	// 사용할 Bean
	@Component
	class SimpleLoggingProcessingComponent {
		
		private Logger logger = LoggerFactory.getLogger(SimpleLoggingProcessingComponent.class);
		// 파라미터로 받아온 message : 바디 메시지
		public void process(String message) {
			logger.info("SimpleLoggingProcessingComponent : {}", message); // SimpleLoggingProcessingComponent : null
		}
	}

}

로그보기

// 원래의 바디 메시지
null
// processor에서의 로깅
SimpleLoggingProcessingComponent : null
// processor 이후의 바디 메시지
// processor는 작업 이후에도 바디 메시지가 변하지 않는다.
null

process 메소드를 이용한 Processing

@Component
public class ProcessingUsingProcessMethod extends RouteBuilder{

	@Override
	public void configure() throws Exception {
		
		// 1) starting end point 정의
		from("timer:nyj-timer") // null
		.log("${body}")
		// 2) bean({클래스객체명})
		.process(new SimpleLoggingProcessor())
		.log("${body}")
		// 3) ending end point 정의
		.log("log:nyj-log");		
	}
	
	// Process를 구현하는 Processor 클래스
	public class SimpleLoggingProcessor implements Processor {

		private Logger logger = LoggerFactory.getLogger(SimpleLoggingProcessor.class);
		
		@Override
		public void process(Exchange exchange) throws Exception {
			// exchange : exchange 전체를 가져옴
			logger.info("SimpleLoggingProcessingComponent : {}", exchange); // SimpleLoggingProcessingComponent : Exchange[]
			// exchange.getMessage().getBody() : 바디 메시지만 가져옴
			logger.info("SimpleLoggingProcessingComponent : {}", exchange.getMessage().getBody()); // SimpleLoggingProcessingComponent : null
		}
	}
}

로그보기

// 원래의 바디 메시지
null
// processor에서의 로깅
// exchange 자체 로깅
SimpleLoggingProcessingComponent : Exchange[]
// exchange의 바디 메시지만 로깅
SimpleLoggingProcessingComponent : null
// procesoor 이후의 바디 메시지
null

0개의 댓글

관련 채용 정보