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

时间:2018-08-15 15:19:04

标签: apache-camel

我正在使用Apache Camel来帮助捕获第三方软件包发出的消息数据。在这种特定情况下,我只需要捕获软件产生的内容,另一端就没有接收器(实际上没有接收到的“端”)。

因此,我尝试设置仅具有“从”端点而没有“至”端点的路由。显然这是不正确的用法,因为我收到以下异常:

[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

如何设置骆驼路线,使我能够拦截(捕获)来自源的消息流量,而不将其“发送”给任何东西?不需要接收器。仅仅丢弃接收到的所有内容的合适的“至”端点是什么?

to("log:foo")的异常建议。这是做什么的?

4 个答案:

答案 0 :(得分:2)

您可以查看Stub组件是否可以帮助

http://camel.apache.org/stub.html

示例:

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

答案 1 :(得分:1)

  

to(“ log:foo”)的异常建议。这是做什么的?

它会将您的路线消息发送到带有组件类型为log的端点: (http://camel.apache.org/log.html)-该组件基本上使用适当的日志类别将消息内容(正文和/或标题和/或属性)转储到您的日志文件中。

如果您只想删除收到的所有内容,这是一个不错的选择:

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

答案 2 :(得分:0)

我会使用 mock:dummy 。存根实际上看不出任何优势。为此,模拟功能更强大,请参见http://camel.apache.org/mock.html

答案 3 :(得分:0)

显然,如果你在 Linux 下,你也可以重定向到 /dev/null 但我没有确切的语法。

也可以使用类似的东西(未经测试):

to( "file:/dev/null")