如果我使用RouteBuilder
配置Camel:
context.addRoutes(new RouteBuilder() {
@Override
public void configure() throws Exception {
from("aws-s3://my-bucket?accessKey=******&secretKey=******")
.to("stream:out");
}
});
然后消耗my-bucket
中的每个对象,然后立即删除。
但是如果我使用Camel RX:
new ReactiveCamel(context).toObservable("aws-s3://my-bucket?accessKey=*****&secretKey=*****", String.class)
.subscribe(System.out::println);
我发现永远不会删除对象,不断消耗相同的对象。
S3Consumer
似乎有一个'OnCompletion
' callback,它会在消费后移除一个对象。只有在使用RouteBuilder
方法时才会调用回调。
我希望两种方法的工作方式相似,但很明显我错过了一些东西。是否有可能采取“反应式”方法。消费对象后删除它们?
编辑:我使用的是Camel 2.15.2。
答案 0 :(得分:2)
啊,是的,感谢您发现这一点。这是camel-rx中的一个错误,我已经记录了一张票来解决这个问题:https://issues.apache.org/jira/browse/CAMEL-8747
使用camel-rx时未启用UoW。