【发布时间】:2015-03-13 02:47:30
【问题描述】:
我有一个应用程序(在 EC2 实例上运行)解析到达 S3 存储桶的新日志文件。我已经在此存储桶上设置了 S3 通知,以便在 PUT 请求时将消息放入 SQS 队列中。目的是将新到达的日志文件从 S3 传输到 EC2 实例。
我认为 Apache Camel 将是解决此问题的理想人选。我对解决方案有以下问题/意见,非常感谢您对此的一些反馈:
我们可以使用 Camel 路由从 SQS 读取消息,然后从 JSON 消息中提取对象键。是否可以在另一个将这个对象从 S3 复制到本地 FS 的 Camel 路由(使用 S3 组件)中使用这个对象键?从外观上看,Camel S3 组件似乎只能处理存储桶中的新对象,因为它只需要 URI 中的存储桶名称。因此,可能无法从 S3 存储桶复制特定密钥。另外我不确定是否可以在 Camel 中使用动态 URI,因为对象名称每次都会不同。
如果 Camel S3 组件确实能够处理到达 S3 存储桶的新对象,那么我们完全不需要 S3 通知。但这有一个问题(因为它是无状态的),如果由于某种原因此应用程序出现故障,那么它将错过停机期间到达的对象。
另一种可能性是使用 Camel 从 SQS 读取消息,处理这些消息并使用普通 Java 类从 S3 复制对象。但是这种方式并没有充分发挥 Apache Camel 的优势。
【问题讨论】:
标签: java amazon-s3 apache-camel amazon-sqs