java - Apache Camel - 基于正文聚合消息

标签 java amazon-s3 apache-camel

我目前正在使用 apache Camel 来消费 SQS 消息,一切都工作正常。

作为一个项目的一部分,我在上传文件时使用 S3 通知事件。文件上传到可预测的 S3 key - (<type>/<account-id>/<id>/<file>) .

处理时,我使用驼峰将消息聚合到单个交换中(等待 10 条消息,或 1 秒后超时)。我想知道,有没有一种方法可以基于 S3 进行聚合 - 例如,聚合具有相同类型或 id 的消息。

根据我阅读camel文档的了解,有多种方法可以查询Json有效负载或 header 值 - 这是一种可能的方法吗(因为S3事件通知是Json消息,并且根据AWS文档,PUT操作将只生成一个记录条目)?或者我需要实现我自己的聚合器吗?

添加一些上下文 - 我有一个收集数据并将数据上传到 S3 的服务。然后,另一个服务将在收到通知后下载该数据,对其进行处理并上传到另一个存储桶。如果我可以聚合 S3 通知,我就可以合并数据并上传,从而减少上传和 API 调用等的数量。

最佳答案

如果您使用 camel-aws s3组件,然后您可以从消息的 CamelAwsS3Key header 访问/获取 S3 key ,并且不需要查询正文,但需要从 S3 key 中提取所需字段。

关于java - Apache Camel - 基于正文聚合消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45745907/

相关文章:

java - SQL 错误 : 0, SQLState: 25P02(当前事务已中止),没有事务

java - 暂停具有多个消费者的kafka主题

PHP/亚马逊 S3 : Query string authentication

ruby-on-rails - AWS::S3::Errors::InvalidArgument 与 Paperclip PDF 上传

java - 有没有办法将 String 转换为 JTextField 类型?

java - 使用 Scanner 调用构造函数

amazon-web-services - 无法删除其中包含文件的 S3 存储桶

apache-camel - Camel URL参数中的非ASCII字符

java - Camel Jetty 异步路由问题

java - 使用 Camel 发送 ActiveMQ 消息时出现 ClassCastException