Java 驼峰路由,http4组件,动态url参数

Java 驼峰路由,http4组件,动态url参数,java,apache-camel,Java,Apache Camel,我是apache camel的新手,我只是想了解它能做什么和不能做什么。我想使用http4组件动态地提供url参数。例如,如果我有这样的东西: from("direct:start").to("http4://hostname.com/the/path") .unmarshal().json(JsonLibrary.Jackson,MyBeanClass.class) .to("mock:result"); ProducerTemplate template = camelContext.cr

我是apache camel的新手,我只是想了解它能做什么和不能做什么。我想使用http4组件动态地提供url参数。例如,如果我有这样的东西:

from("direct:start").to("http4://hostname.com/the/path")
.unmarshal().json(JsonLibrary.Jackson,MyBeanClass.class)
.to("mock:result");
ProducerTemplate template = camelContext.createProducerTemplate();
Map<String,String> m = new HashMap<String,String>();
m.put("key1","val1");
m.put("key2", "val2");
template.sendBody("direct:start", m);
然后我有一个制作人模板,如下所示:

from("direct:start").to("http4://hostname.com/the/path")
.unmarshal().json(JsonLibrary.Jackson,MyBeanClass.class)
.to("mock:result");
ProducerTemplate template = camelContext.createProducerTemplate();
Map<String,String> m = new HashMap<String,String>();
m.put("key1","val1");
m.put("key2", "val2");
template.sendBody("direct:start", m);
ProducerTemplate=camelContext.createProducerTemplate();
Map m=新的HashMap();
m、 put(“key1”、“val1”);
m、 put(“键2”、“值2”);
模板。发送体(“直接:开始”,m);
我希望有某种方法可以神奇地将地图转换为url参数,以便发送的实际url是“http://hostname.com/the/path?key1=val1&key2=val2".

这可能吗?文档中没有提到类似的内容,但我并不认为一个只能调用静态URL的组件是多么有用。感谢您的帮助。

找到了答案:

路线可以执行以下操作:

from("direct:start")
.setHeader(Exchange.HTTP_QUERY, simple("key1=${in.headers.key1}&key2=${in.headers.key2}"))
.to("http4://host.com/the/path")
Map<String,Object> m = new HashMap<String,Object>();
m.put("key1", "1");
m.put("key2", "2");
template.sendBodyAndHeaders("direct:start", null, m);
然后生产者模板可以执行以下操作:

from("direct:start")
.setHeader(Exchange.HTTP_QUERY, simple("key1=${in.headers.key1}&key2=${in.headers.key2}"))
.to("http4://host.com/the/path")
Map<String,Object> m = new HashMap<String,Object>();
m.put("key1", "1");
m.put("key2", "2");
template.sendBodyAndHeaders("direct:start", null, m);
Map m=newhashmap();
m、 认沽权(“第1项”、“第1项”);
m、 认沽权(“第2项”、“第2项”);
template.sendboyandheaders(“direct:start”,null,m);
找到了答案:

路线可以执行以下操作:

from("direct:start")
.setHeader(Exchange.HTTP_QUERY, simple("key1=${in.headers.key1}&key2=${in.headers.key2}"))
.to("http4://host.com/the/path")
Map<String,Object> m = new HashMap<String,Object>();
m.put("key1", "1");
m.put("key2", "2");
template.sendBodyAndHeaders("direct:start", null, m);
然后生产者模板可以执行以下操作:

from("direct:start")
.setHeader(Exchange.HTTP_QUERY, simple("key1=${in.headers.key1}&key2=${in.headers.key2}"))
.to("http4://host.com/the/path")
Map<String,Object> m = new HashMap<String,Object>();
m.put("key1", "1");
m.put("key2", "2");
template.sendBodyAndHeaders("direct:start", null, m);
Map m=newhashmap();
m、 认沽权(“第1项”、“第1项”);
m、 认沽权(“第2项”、“第2项”);
template.sendboyandheaders(“direct:start”,null,m);

hey@kevin。假设我在from()中公开了一个服务,我想从from url添加参数和一些额外的参数。如果我添加这些额外的参数,在查询中,我的骆驼代理路由是否有效?嘿@kevin。假设我在from()中公开了一个服务,我想从from url添加参数和一些额外的参数。如果我在查询中添加这些额外的参数,我的骆驼代理路由会工作吗?