Apache camel 阿帕奇驼峰路线,无;至;端点

Apache camel 阿帕奇驼峰路线,无;至;端点,apache-camel,Apache Camel,我使用ApacheCamel来帮助捕获由第三方软件包发出的消息数据。在这个特定的例子中,我只需要捕获软件产生的内容,另一端没有接收器(实际上没有“端”可去) 因此,我尝试设置一个只包含“from”端点而不包含“to”端点的路由。显然,这是不正确的用法,因为我收到了以下异常: [2018-08-15 11:08:03.205] ERROR: string.Launcher:191 - Exception org.apache.camel.FailedToCreateRouteException:

我使用ApacheCamel来帮助捕获由第三方软件包发出的消息数据。在这个特定的例子中,我只需要捕获软件产生的内容,另一端没有接收器(实际上没有“端”可去)

因此,我尝试设置一个只包含“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
[2018-08-15 11:08:03.205]错误:字符串。启动器:191-异常
org.apache.camel.FailedToCreateRouteException:无法在以下位置创建路由1:>>>从[mina:udp://localhost:9877?sync=false] 
to(“log:foo”)的异常建议。这有什么用

它将您的路由消息发送到具有log类型组件的端点: ()-基本上使用适当的日志类别将消息内容(正文和/或标题和/或属性)转储到日志文件的组件

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

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

您可以查看
存根
组件是否有帮助

例如:

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

我会使用mock:dummy。实际上,在存根中看不到任何优势。Mock的功能更强大,请参见

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

也可以使用类似(未经测试)的内容:

to( "file:/dev/null")

所以,当处理完成时,我需要删除一个可能很大的文件?没有办法只做向/dev/null发送数据的等效操作?看起来我可以做类似于(“log:trash?level=OFF”)的事情。的确如此。否则,只需调整日志系统:-降低目标类别的调试级别(不转储内容)-使用滚动文件追加器策略(仅保留最后两天以减少磁盘空间消耗)执行
.stop()工作?工作得很好。你能使用DLC EIP吗?请参阅>当消息传递系统确定它不能或不应该传递消息时,它可能会选择将消息移动到死信通道。正如某人建议的那样。停止();在捕获您需要的内容后,效果会更好。请注意,存根在保留发送给它的消息时会导致内存泄漏问题。如果您仍然需要使用存根,请考虑DeCalfNoWuSE选项。除了:记住,模拟是为测试而设计的。将模拟端点添加到路由时,将存储发送到该端点的每个交换。因此,信息将被保存在内存中,如果它们很大或很频繁,您最终将耗尽内存。。。这样的内存泄漏并不有趣。