帮助了解骆驼路线pliz。我读过但我不明白,我了解如何通过 XML,但我需要通过 Java 类来完成,并且没有 Spring。需要从属性文件,也就是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 骆驼直接?
Apache骆驼直接是某种“手动”进入路线的点。
其中,
someName
是该点的任何字符串名称。结果,路由 (
route
) 显然应该是这样的:Message Headers
中的骆驼 http在路由本身中http
例如通过http
-component ( apache camel http )调用我在我的答案中添加了一个示例
Predicate
: