2014-06-12 3 views
3

브라우저에서 정보를 가져 와서 대기열에 놓는 응용 프로그램을 만들려고합니다. 그런 다음 해당 데이터는 대기열에서 선택되어 보안을 위해 응용 프로그램을 통해 전송됩니다. 보안 응용 프로그램은 별도의 작업 응용 프로그램에서 수행하도록 완료되면 다른 대기열에 놓아야합니다.apache camel 라우팅 대기열 문제

누구나 라우팅과 함께 나를 도울 수 있습니까? 기본적으로, 내가 찾고 경로는 다음과 같습니다

브라우저/UI -> Qnonsecure -> 보안 응용 프로그램 -> QSecure -> 동작 응용 프로그램

내가 지금 이해하는 것은 다음과 같다 :

<camelContext xmlns="http://camel.apache.org/schema/spring"> 
    <route> 
     <from uri="jms:queue:QnonSecure"/> 
     <to uri="jms:queue:QSecure"/> 
    </route> 
</camelContext> 

어떻게 응용 프로그램과의 경로를 변경 할 수 있습니까? 브라우저에서 QnonSecure로 입력을 보내려면 어떻게합니까? 또한, 내 코드에서 QnonSecure와 QSecure 사이에 보안 앱을 호출하는 위치는 어디입니까?

답변

2

하나 이상의 가능한 솔루션이 있습니다. 출발점으로 다음과 같은 경로를 가지고 :

<camelContext xmlns="http://camel.apache.org/schema/spring"> 
    <route> 
     <from uri="restlet:http://localhost:8081/myApp?restletMethod=post"/> 
     <to uri="jms:queue:QnonSecure" pattern="InOut" /> 
     <enrich uri="direct:securityApp"/> 
     <choice> 
      <when> 
       <simple>${header.myHeader} == "SECURE"</simple> 
       <to uri="jms:queue:QSecure" pattern="InOut" /> 
       <to uri="direct:actionApp" /> 
      </when> 
      <otherwise> 
       <!-- handle non valid requests --> 
      </otherwise> 
     </choice> 
    </route> 
</camelContext> 

단계 :

  1. 브라우저는 낙타 restlet 구성 요소에 POST 요청을 보냅니다. 이 작업은 JavaScript, 링크 및/또는 일반 제출 버튼을 통해 수행 할 수 있습니다.
  2. 본문이 jms:queue:QnonSecure으로 전송됩니다. InOut 패턴을 사용하면 동기식으로이 작업이 수행되고 응답이 반입됩니다.
  3. jms:queue:QnonSecure의 응답은 자격 증명이 테스트되는 direct:securityApp으로 전송됩니다. 올바른 경우 머리글 myHeaderSECURE (또는 다른 값)으로 설정됩니다.
  4. choice 문에서 myHeader이 테스트됩니다. 보안 경우 jms:queue:QSecure 및 마지막으로 direct:actionApp이 호출됩니다.
+0

감사합니다. 당신은 낙타와 activemq에 대해 매우 잘 알고 있습니다. 연습을 통해 대부분 배웠습니까? 아니면 익숙해지는 또 다른 빠른 방법이 있습니까? 첫 번째 옵션은 덜 노련한 낙타 정신에 더 합리적입니다. testQsource가 존재하지 않으면 어떻게 될까요? 브라우저의 입력을 testQDestination으로 보내려면 어떻게해야합니까? 또한, 내 코드에서 testQdestination과 securityQ 사이에 보안 앱을 호출하는 위치는 어디입니까? – Theo

+0

@ user3734863'testQsource'가 존재하지 않으면, 그것은 ActiveMQ에 의해 생성됩니다. JMS 메시지를 보내려면 Camel의 'ProducerTemplate'(http://camel.apache.org/producertemplate.html 참조)을 사용하십시오. 그러나 동기식 피드백이 필요하면 JMS를 전혀 사용하지 마십시오. 나는 당신의 경우에 이것이 모든 것을 훨씬 쉽게 할 것이라고 생각합니다. –

+0

다시 한번 감사드립니다. 브라우저에서 testQdestination으로 데이터/메시지를 보내고 testApplication에 보내기 전에 testQdestination에있는 데이터/메시지를 보안 앱을 통해 Qsecure로 보내려면 어떻게해야합니까? – Theo