Я использую Apache Camel для системной интеграции, и у меня возникает странная проблема с URL-связью, которая возникает только при следующих условиях:
- Я предоставляю службу REST, которая предоставляет параметры
- Я не использую процессор для преобразования данных, но компоненты
Я использую Apache Camel с Spring Boot и компонент netty4-http для перенаправлений.Ниже приведен упрощенный пример, который создает аномалию:
@Component
public class TestRoute extends RouteBuilder {
public void configure() throws Exception {
getContext().getGlobalOptions().put("CamelJacksonEnableTypeConverter", "true");
restConfiguration()
.host("localhost")
.port("8096")
.bindingMode(RestBindingMode.auto);
rest()
.get("/method/{param1}")
// Same problem if i use from() instead route()
.route()
.to("direct:some-operation")
.to("netty4-http://localhost:8080/another/service");
}
}
@Component
public class TestBean {
@Consume(uri = "direct:some-operation")
public String getStartProcess() {
/* bean's operation */
return "Hello";
}
}
Например, если я позвоню http://localhost:8096/method/dog,, я получу в результате то, что вызов будет перенаправлен на http://localhost:8080/another/service/method/dog,, которыйredirect и остальное объединяются.
Первая попытка, которую я предпринял, состояла в том, чтобы удалить bean-компонент to () , думая, что это создало проблему, но результат не изменился.
Итак, я сделал так много тестов и заметил, что аномалия не возникает, если я выполняю одну из следующих операций:
, вместо того, чтобы использовать бин, я перемещаю логику впроцесс.Таким образом, я создаю новое сообщение из в объекте обмена, и перенаправление является правильным (по крайней мере, это объяснение, которое я дал себе)
.process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception{
/* same bean's operation */
exchange.getOut().setBody("Hello");
}
}).to("netty4-http://localhost:8080/another/service");
ЕслиЯ выставляю вызов REST без параметров, затем как .get ("/ method"), он также работает с bean-компонентом, и конкатенация не происходит
Почему у меня это поведение аномально?Есть ли возможное решение с использованием бобов?
Спасибо