помогите разобраться в маршрутах camel плиз. Читаю читаю и не понимаю, понимаю как через XML, но мне надо сделать через Java класс, и без Spring. Нужно из файла properties составить строку запроса, то есть endpoint. и далее ее выполнить(например http://server:22000/api/token?login=login&pass=pass)
В ответ должен прийти токен. Вот мой класс, все бралось из доки, но мне не ясно это from("direct:start"), что за direct:start, или я должен здесь что-то другое прописать? Например как раз получение адреса? Это я уже просто эксперементирую.
public class PrepareOapiForAuthTokenRoute extends RouteBuilder {
final String applicationProperties = "application.properties";
@Override
public void configure() throws Exception {
from("direct:start").process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
System.out.println("2222");
}
});
}
public String gerUrl() throws IOException {
Properties applicationProps = new PropUtils().readProperties(applicationProperties);
String user = (String)applicationProps.get("oapi.user");
String url = (String)applicationProps.get("oapi.url");
String pass = (String)applicationProps.get("oapi.password");
String fullUrl = url + "?login=" + user + "&password=" + pass;
System.out.println(fullUrl);
return fullUrl;
}
}
Делаю тест вот так, но ничего мне не выходит,даже просто строку, что выполнилось все
public class PaysRouteBuilderTest {
final private static Logger LOG = LoggerFactory.getLogger(PaysRouteBuilderTest.class);
@Test
public void test() {
RouteBuilder builder = new PrepareOapiForAuthTokenRoute();
try {
builder.configure();
}catch (Exception e) {
LOG.error("Exception: ",e);
}
}
}
Сделал вот такой тест, и даже вроде работает и выстраивает строку, но сам процессор не работает, то есть сообщение не выводит
public class PaysRouteBuilderTest extends CamelTestSupport {
final private static Logger LOG = LoggerFactory.getLogger(PaysRouteBuilderTest.class);
final String applicationProperties = "application.properties";
@Test(timeout = 10000)
public void testMethod() throws Exception {
Thread.sleep(5000); // Нужно, чтобы Camel успел обработать файлы, до завершения теста
}
@Override
protected RouteBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
public void configure() {
from("direct:start")
.setHeader(Exchange.HTTP_METHOD, constant("GET"))
.to("http:" + gerUrl()).process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
//HttpServletResponse response = exchange.getOut().getBody(HttpServletResponse.class);
System.out.println("ghjhh");
}
});
}
};
}
public String gerUrl() {
Properties applicationProps = null;
try {
applicationProps = new PropUtils().readProperties(applicationProperties);
} catch (IOException e) {
e.printStackTrace();
}
String user = (String)applicationProps.get("oapi.user");
String url = (String)applicationProps.get("oapi.url");
String pass = (String)applicationProps.get("oapi.password");
String fullUrl = url + "?login=" + user + "&password=" + pass;
return fullUrl;
}
}
Не очень понятно из вопроса в каком контексте должен запускаться маршрут (route
), поэтому будем считать, что по шедулеру.
Что такое apache camel direct?
Apache camel direct - это точка некоего "ручного" входа в маршрут.
URI format
direct:someName[?options]
Where someName can be any string that uniquely identifies the endpoint.
Где, someName
- это любое строковое название данной точки.
В итоге, маршрут (route
), видимо, должен быть такой:
Message Headers
в apache camel httphttp
, например через http
-компоненту (apache camel http)Дополняю ответ примером Predicate
:
private Predicate predicateExample() {
return new Predicate() {
@Override
public boolean matches(Exchange exchange) {
return true; //здесь реализуется какая-то логика
}
};
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Итак,у меня есть метод, который должен получить из запроса JSON, обработать его в POJO и вернуть его
Здравствуйте не так давно задался вопросом на тему того как тестировать сервис-слой в приложенияхПоискав немного информации в интернете...
с криптопро я раньше не работалНо сейчас в нашей компании возникла задача реанимировать сервис для подписи файлов