骆驼网址侦听器



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

我希望这条路线一直处于活动状态,直到我停止它。

是的,camel-http4 只用于生产,它不能用作消费者,因为它是基于 Apache HTTP客户端的。

但是您不需要计时器或丰富器等特殊的东西。你可以使用另一个可以充当服务器的Camelhttp组件。例如骆驼码头。

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

遗憾的是,您无法从应用程序外部执行此操作,因为如果不修改其他应用程序,您就不知道其他应用程序中的传入请求。

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

from("jetty:http://localhost:[port]/yourApp")
.to("activemq:queue:myQueueName")
  • 此路由充当/yourApp的网络服务器
  • 并将消息正文发送到已配置的 ActiveMQ 代理的消息队列。

相关内容

  • 没有找到相关文章

最新更新