骆驼网址监听器

时间:2019-04-03 11:57:21

标签: spring-boot apache-camel spring-camel

我想创建一条将从客户端请求触发的路由。 例如,我有一条路由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 "";
}

我希望该路由一直有效,直到我停止它。

1 个答案:

答案 0 :(得分:1)

是的,camel-http4仅用于生产,由于它基于Apache HTTP 客户端,因此不能用作使用者。

但是您不需要计时器或浓缩器之类的特殊物品。您可以只使用另一个可以充当服务器的Camel http组件。例如camel-jetty

经过长时间的讨论,我终于意识到,您想在其他已经存在的应用程序中“分支”请求,即您希望发送一个传入请求,另外还要处理它们,到ActiveMQ。

不幸的是,您无法从应用程序外部进行此操作,因为您不知道其他应用程序中的传入请求,而无需修改其他应用程序。

但是,如果您可以修改其他应用程序,以便它们将其有效负载发送到新的Camel应用程序,则路由将非常简单:

from("jetty:http://localhost:[port]/yourApp")
    .to("activemq:queue:myQueueName")