骆驼url听众
Camel url listener
我想创建一个由客户端请求触发的路由。
例如,我有一条路线 http://localhost:8080/get,其中我有一些 json 对象。
当我向 http://localhost:8080/get 发送请求以将数据发送到 ActiveMQ 时,我想创建一个路由。像事件监听器。我只想在有请求时发送到 activeMq URL。
我已经搜索过我不能在 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 客户端。
但是您不需要像计时器或增强器这样的特殊东西。您可以只使用另一个可以充当服务器的 Camel http 组件。例如 camel-jetty。
经过长时间的讨论,我终于意识到 你想 "branch off" 在你的其他已经存在的应用程序中请求 ,即你想发送一个传入请求,另外处理它们,到 ActiveMQ。
不幸的是,您不能从您的应用程序外部执行此操作,因为如果不修改那些其他应用程序,您不知道其他应用程序中的传入请求。
但是,如果您可以修改您的其他应用程序,以便它们将其有效负载发送到您的新 Camel 应用程序,那么路由将非常简单:
from("jetty:http://localhost:[port]/yourApp")
.to("activemq:queue:myQueueName")
- 此路由充当
/yourApp
的网络服务器
- 并将消息体发送到configured ActiveMQ broker的消息队列。
我想创建一个由客户端请求触发的路由。 例如,我有一条路线 http://localhost:8080/get,其中我有一些 json 对象。 当我向 http://localhost:8080/get 发送请求以将数据发送到 ActiveMQ 时,我想创建一个路由。像事件监听器。我只想在有请求时发送到 activeMq URL。 我已经搜索过我不能在 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 客户端。
但是您不需要像计时器或增强器这样的特殊东西。您可以只使用另一个可以充当服务器的 Camel http 组件。例如 camel-jetty。
经过长时间的讨论,我终于意识到 你想 "branch off" 在你的其他已经存在的应用程序中请求 ,即你想发送一个传入请求,另外处理它们,到 ActiveMQ。
不幸的是,您不能从您的应用程序外部执行此操作,因为如果不修改那些其他应用程序,您不知道其他应用程序中的传入请求。
但是,如果您可以修改您的其他应用程序,以便它们将其有效负载发送到您的新 Camel 应用程序,那么路由将非常简单:
from("jetty:http://localhost:[port]/yourApp")
.to("activemq:queue:myQueueName")
- 此路由充当
/yourApp
的网络服务器
- 并将消息体发送到configured ActiveMQ broker的消息队列。