0

我正在遵循 Camel 路线,它试图从 S3 存储桶中读取文件列表:

from("direct:my-route").
.from("aws-s3://my.bucket?useIAMCredentials=true&useAwsKMS=true&awsKMSKeyId=my-key-id&deleteAfterRead=false&operation=listObjects&includeBody=false&prefix=test1/test.xml")
.log(" File detected: ${header.CamelAwsS3Key}")
.end();

然而,这条路线被每分钟运行的外部调度程序调用。看起来 Camel-S3 组件的默认行为是使用调度程序运行,但这会导致相同的文件被一次又一次地处理。

我尝试使用 startScheduler=false 关闭 Camel-S3 调度程序,但是当外部调度程序启动并获取“$ {header.CamelAwsS3Key}”的空值时,这不会执行“aws-s3”部分。

是否可以在没有内部调度程序的情况下运行此组件?

正在使用的骆驼版本 - 2.22.0

用于 aws 的依赖项:

<dependency>
  <groupId>org.apache.camel</groupId>
  <artifactId>camel-aws</artifactId>
  <version>${camel.version}</version>
</dependency>
4

1 回答 1

2

没有 2 x from,那基本上不是两个独立的消费者。而是在调用另一个 from 时使用内容丰富器 (pollEnrich) 从 s3 消费。

from
   pollEnrich
   log

阅读有关内容丰富器和 pollEnrich/enrich 的文档(特别是关于 pollenrich 的超时)。 https://camel.apache.org/manual/latest/content-enricher.html

于 2020-01-10T04:31:47.943 回答