没有“到”端点的Apache Camel路由

h4cxqtbf  于 2022-11-07  发布在  Apache
关注(0)|答案(3)|浏览(287)

我正在使用Apache Camel来帮助捕获第三方软件包发出的消息数据。在这个特定的示例中,我只需要捕获软件产生的数据,另一端没有接收器(真的没有“端”可去)。
因此,我尝试设置一个只有“from”端点而没有“to”端点的路由。显然,这是不正确的用法,因为我收到了以下异常:

[2018-08-15 11:08:03.205] ERROR: string.Launcher:191 - Exception
org.apache.camel.FailedToCreateRouteException: Failed to create route route1 at: >>> From[mina:udp://localhost:9877?sync=false] <<< in route: Route(route1)[[From[mina:udp://localhost:9877?sync=false]] -... because of Route route1 has no output processors. You need to add outputs to the route such as to("log:foo").
    at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:1063)
    at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:196)
    at org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:974)
    at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:3301)
    at org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:3024)
    at org.apache.camel.impl.DefaultCamelContext.access$000(DefaultCamelContext.java:175)
    at org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:2854)
    at org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:2850)
    at org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(DefaultCamelContext.java:2873)
    at org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:2850)
    at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
    at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:2819)
    at {removed}.Launcher.startCamel(Launcher.java:189)
    at {removed}.Launcher.main(Launcher.java:125)
Caused by: java.lang.IllegalArgumentException: Route route1 has no output processors. You need to add outputs to the route such as to("log:foo").
    at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:1061)
    ... 13 more

我如何设置一个 Camel 路由,使我能够拦截(捕获)来自源的消息流量,而不将其发送到任何地方?不需要接收者。什么是一个适当的“到”端点,它只丢弃它接收到的所有东西?
to("log:foo")的异常建议。它有什么作用?

ztmd8pv5

ztmd8pv51#

您可以查看Stub组件是否有帮助
http://camel.apache.org/stub.html
示例:

from("...")
    .to("stub:nowhere");
9udxz4iz

9udxz4iz2#

to(“log:foo”)的异常建议。这有什么作用?
它将您的路由消息发送到具有日志类型 * 组件 * 的 * 端点 *:(http://camel.apache.org/log.html)-基本上将消息内容(主体和/或标题和/或属性)转储到使用适当日志类别的日志文件的组件。
如果你只是想把收到的东西都放下,这是个不错的选择:

to("log:com.company.camel.sample?level=TRACE&showAll=true&multiline=true")
x3naxklr

x3naxklr3#

显然,如果你在Linux或Unix下,你也可以重定向到/dev/null,就像这个例子:

to( "file:/dev?fileName=null")

我不确定它是否可以在Windows上使用,但我不这么认为。
请注意语法:to( "file:/dev/null")不起作用,因为它指向名为null的目录,但如果使用fileName选项,它将起作用。

相关问题