2017-11-22 23 views
0

나는 경로 다음 근래 :Camel - 요청 매개 변수 (throwExceptionOnFailure)를 URL에 추가하는 방법은 무엇입니까?

from("quartz2:findAll//myGroup/myTimerName?cron=" + pushProperties.getQuartz()) 
       //.setBody().constant("{ \"id\": \"FBJDBFJHSDBFJSBDfi\" }") 
       .to("mongodb:mongoBean?database=" + mongoDataConfiguration.getDatabase() 
         + "&operation=findAll&collection=" + mongoDataConfiguration.getDataPointCollection()) 
       .process(exchange -> { 
        exchange.getIn().setBody(objectMapper.writeValueAsString(exchange.getIn().getBody())); 
       }).streamCaching() 
       .setHeader(Exchange.HTTP_METHOD, constant(pushProperties.getHttpMethod())) 
       .setHeader(Exchange.CONTENT_TYPE, constant(MediaType.APPLICATION_JSON_VALUE))      
       .to(pushProperties.getUrl() + "&throwExceptionOnFailure=false").streamCaching() 

당신은 내가 throwExceptionOnFailure=false

를 사용하고 난이 구성에서 내 URL을 볼 수 있듯이. 그러나 우리는

pushProperties.getUrl() = localhost:8080/url?action=myaction

하고

pushProperties.getUrl() = localhost:8080/url

의 경우에는 작동하지 않는 경우가 URL에 요청 매개 변수를 추가하는 낙타의 universla 방법이 작동 발견 ?

무엇인가 :

private String buildUrl() { 
    String url = pushProperties.getUrl(); 
    return url + (url.contains("?") ? "&" : "?") + "throwExceptionOnFailure=false"; 
} 

낙타 API를 내부

답변

0

localhost:8080/url의 경우, 추가 후 잘못이

localhost:8080/url&throwExceptionOnFailure=false
처럼되기 때문에
그것은해야한다 즉
localhost:8080/url?throwExceptionOnFailure=false,당신이 이미 requestpatam (?action=myaction) 그래서 다음 하나는 앰퍼샌드로 추가 할 수있는 일 첫 번째 경우에서 은 (&)

+0

그것은 분명합니다. ** addParamater ("throwExceptionOnFailure", false) **와 같은 메서드를 갖고 싶습니다. ** 낙타 API의 어딘가에있을 수 있다고 생각합니다. 물론 자기 자신을 쓸 수는 있지만, 존재한다면 buit-in을 사용하고 싶습니다. 문서 http://camel.apache.org/servlet에 따라 – gstackoverflow

+0

에 따라, Exchange.HTTP_QUERY라는 키를 가진 헤더로 설정할 수 있습니다 – pvpkiran

+0

Exchange.HTTP_QUERY *를 찾을 수 없습니다. – gstackoverflow

0

나는 당신의 http 구성 요소에 엔드 포인트를 구성하기 위해 자신의 논리를 추가 할 수 있다고 생각 런타임. 이는 CamelContext이 경로 자체에서 처리하기 때문입니다. 매개 변수 throwExceptionOnFailurehttp 구성 요소의 속성입니다.

http 구성 요소가 처리 된 후에 이러한 매개 변수가 평가 될 것이므로 .setHeader(Exchange.HTTP_QUERY, constant("throwExceptionOnFailure=false"))을 통해 매개 변수를 추가하는 것이 좋지 않다고 생각합니다. URL 대상에 추가하십시오. , "How to use a dynamic URI in to()"에서 봐 주시기 바랍니다 :

.toD(pushProperties.getUrl() + "&throwExceptionOnFailure=false") 

당신은 당신이 pushProperties.getUrl()의 결과에 따라 원하는 것을 할 수있는 논리를 작성하는 simple expression를 사용할 수 있습니다.