[CAMEL] Processing


転送と処理の違い

  • Transformation
  • 本体メッセージを変換する動作
  • 変換後変換主体メッセージ
  • Processing
  • マスターメッセージを変換することなく、任意の動作を実行することができる
  • .

    beanメソッドによる処理

    @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

    プロセスメソッドによる処理

    @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