Camel RX 不会删除从 S3 消耗的对象
Camel RX is not deleting objects consumed from S3
如果我使用 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
方法时才会调用回调。
我希望这两种方法的工作方式相似,但很明显我遗漏了一些东西。是否可以让 'reactive approach' 在对象被消耗后将其删除?
编辑: 我正在使用 Camel 2.15.2。
啊,是的,感谢您发现这一点。这是 camel-rx 中的一个错误,我已经记录了一张票来解决这个问题:https://issues.apache.org/jira/browse/CAMEL-8747
使用 camel-rx 时未启用 UoW。
如果我使用 RouteBuilder
:
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
方法时才会调用回调。
我希望这两种方法的工作方式相似,但很明显我遗漏了一些东西。是否可以让 'reactive approach' 在对象被消耗后将其删除?
编辑: 我正在使用 Camel 2.15.2。
啊,是的,感谢您发现这一点。这是 camel-rx 中的一个错误,我已经记录了一张票来解决这个问题:https://issues.apache.org/jira/browse/CAMEL-8747
使用 camel-rx 时未启用 UoW。