Apache camel 阿帕奇驼峰路线,无;至;端点
我使用ApacheCamel来帮助捕获由第三方软件包发出的消息数据。在这个特定的例子中,我只需要捕获软件产生的内容,另一端没有接收器(实际上没有“端”可去) 因此,我尝试设置一个只包含“from”端点而不包含“to”端点的路由。显然,这是不正确的用法,因为我收到了以下异常: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:
[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选项。除了:记住,模拟是为测试而设计的。将模拟端点添加到路由时,将存储发送到该端点的每个交换。因此,信息将被保存在内存中,如果它们很大或很频繁,您最终将耗尽内存。。。这样的内存泄漏并不有趣。