我想创建一条将从客户端请求触发的路由。 例如,我有一条路由http://localhost:8080/get,其中有一些json对象。 当我向http://localhost:8080/get发送请求以将数据发送到ActiveMQ时,我想创建一条路由。像事件监听器一样。我只想在对该URL有请求时才发送给activeMq。 我搜索到我不能在from()中使用http或http4,这使我遇到了问题。我已经尝试过从计时器到url,再到activemq,但这并不是我真正需要的。 这就是我尝试过的。
@GetMapping(value = "/shit")
public String getIt(@RequestParam(value = "url") String url, @RequestParam(value = "activemq") String activeMq) throws Exception {
CamelContext camelContext = new DefaultCamelContext();
RouteBuilder builder = new RouteBuilder() {
public void configure() {
from(url).convertBodyTo(String.class)
.process(exchange -> {
String body = exchange.getIn()
.getBody()
.toString();
System.out.println("The body is: " + body);
})
.pollEnrich()
.simple("activemq://" + activeMq);
}
};
builder.addRoutesToCamelContext(camelContext);
camelContext.start();
return "";
}
我希望该路由一直有效,直到我停止它。
答案 0 :(得分:1)
是的,camel-http4仅用于生产,由于它基于Apache HTTP 客户端,因此不能用作使用者。
但是您不需要计时器或浓缩器之类的特殊物品。您可以只使用另一个可以充当服务器的Camel http组件。例如camel-jetty。
经过长时间的讨论,我终于意识到,您想在其他已经存在的应用程序中“分支”请求,即您希望发送一个传入请求,另外还要处理它们,到ActiveMQ。
不幸的是,您无法从应用程序外部进行此操作,因为您不知道其他应用程序中的传入请求,而无需修改其他应用程序。
但是,如果您可以修改其他应用程序,以便它们将其有效负载发送到新的Camel应用程序,则路由将非常简单:
from("jetty:http://localhost:[port]/yourApp")
.to("activemq:queue:myQueueName")
/yourApp
的网络服务器