Cha*_*Hey 1 amazon-s3 apache-camel
我目前正在尝试在 AWS 上将 Apache Camel 与 S3 存储桶结合使用。目前,我们的代码库的每个环境都有 1 个存储桶(例如:开发存储桶、e2e 存储桶、生产存储桶)。
我们希望使用 1 个存储桶,其中包含多个目录,以避免混乱并巩固空间。然后我们可以将 Camel 指向端点内的一个文件夹来监听(似乎可行)。在尝试配置时,这已经变得非常成问题。Camel 似乎期望它可以连接的每个端点都有一个存储桶。
有人可以阐明这是否可行,或者是否有必要每个端点拥有 1 个存储桶?Camel文档没有说明是否可以。
小智 5
事实上,正如 Alex Nano 所写,s3 文件夹只是对象键(“文件名”)的前缀,因此如果您想设置多个路由来监控不同的 s3“文件夹”,您可以使用 aws:s3 端点的前缀选项
前缀与您使用 aws s3 cli 的功能相同,例如
aws s3 ls s3://mybucket/myfolderInsideBucket/
Run Code Online (Sandbox Code Playgroud)
JUnit 示例
public class CamelAwsS3Test extends CamelTestSupport {
@EndpointInject(uri = "mock:result")
private MockEndpoint resultEndpoint;
@Before
public void setup() throws Exception {
context.start();
}
@Test
public void foo() throws Exception {
int expectedFileCount = 3
resultEndpoint.expectedMessageCount(expectedFileCount);
resultEndpoint.assertIsSatisfied();
}
@Override
protected JndiRegistry createRegistry() throws Exception {
JndiRegistry registry = super.createRegistry();
final String accessKey = "ACCESSKEY";
final String secretKey = "SECRETKEY";
AmazonS3 client = new AmazonS3Client(new BasicAWSCredentials(accessKey, secretKey));
registry.bind("amazonS3Client", client);
return registry;
}
@Override
protected RoutesBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
from("aws-s3://{BUCKET}?amazonS3Client=#amazonS3Client&prefix=${FOLDER}")
.log("hey ${body}").to("mock:result");
}
};
}
Run Code Online (Sandbox Code Playgroud)
}
| 归档时间: |
|
| 查看次数: |
2613 次 |
| 最近记录: |