2012-04-06 5 views
1

다른 위치에서 메시지를 받도록 ActiveMQ를 받았으므로 오늘 아침 여기에서 행복하게 춤을 추고 있습니다!ActiveMQ/Camel이 추가 처리를 위해 파일을 보냅니다.

이제 메시지가 대기열에 도착하면 이후 단계를 수행해야합니다.

특히 파일 이름에 따라 다른 대기열로 보내거나 다른 프로세스로 직접 보내야합니다.

예를 들어 법원 세션의 변경 사항에 대한 정보가 포함 된 파일 하나가 전송됩니다. XML을 읽고 로컬 MySQL 테이블을 업데이트해야합니다. 법원 세션 처리가 웹 서비스 일 수 있습니까? 이상적으로는 파일을 그 서비스로 전달하고 싶습니다.

취소 된 영장에 대한 정보가 포함 된 다른 파일이 전송되었으므로 해당 파일의 정보를 외부 Oracle 데이터베이스에 저장된 저장 프로 시저에 보내야합니다. 나는 파일을 보내야 할 다음 과정을 파일 이름에서 알 수있다.

따라서 대기열로 보내지는 파일에 대한 추가 처리를 설정하는 최선의 방안에 대한 제안을 찾고 있습니까?

감사합니다. BTW - 우리는 이미 'ActiveMQ in Action'과 'Camel in Action'을 주문했으며 그 중 하나를 읽을 예정입니다. 그러나 지금 당장은 특정 초보자 가이드를 크게 높이 평가할 것입니다.

레슬리

답변

2

낙타의 content based router 당신이 찾고있는 것입니다. 그것은 여기에

는 인바운드 대기열에서 읽고 기본적인 예입니다 ... 메시지 본문/헤더/속성을 기반으로 설정 라우팅 규칙을 수행 할 수 있습니다 헤더에 따라 다른 대기열에 위임한다 ...

from("activemq:queue:inboundQueue") 
     .choice() 
      .when(header("foo").isEqualTo("bar")) 
       .to("activemq:queue:barQueue") 
      .when(header("foo").isEqualTo("cheese")) 
       .to("activemq:queue:cheeseQueue") 
      .otherwise() 
       .to("activemq:queue:generalQueue"); 
메시지 헤더를 확인하는 것 외에도

은 또한 몸과 특성 등 적절한 라우팅을 결정하는 (등, simple 표현, xpath 사용) ...

+0

당신은 굉장를 확인하실 수 있습니다! 나는 그것을 지금 시도 할 것이다! – Leslie

+0

Ok 봄 XML을 설정했지만 파일 이름에 TAHEARING ~ SAVE-COURTSESSION이라는 표현이 포함되어 있는지 확인하고 싶습니다. xPath를 사용하면 도움이 될까요? 그리고 헤더 foo라고 할 때 - 그게 어디에 설정되어 있습니까? 메시지에 헤더 정보가 있다는 것을 알았습니다. foo를 그 목록의 값 중 하나로 대체 할 수 있습니까? 감사! – Leslie

+0

레슬리, "foo"를 변경하여 모든 헤더 속성을 참조 할 수 있습니다 ... XML 메시지를 게시하면 xpath를 도와 드리겠습니다 ... –

관련 문제