如何在Spring Cloud Stream的S3 Sink属性中为Key表达式添加日期
实现方式
当然可以通过SpEL表达式直接实现,不需要修改程序。Spring Cloud Data Flow的S3 Sink支持使用Spring表达式语言(SpEL)动态生成S3存储路径,你只需要修改key-expression属性,在路径中添加日期格式化逻辑即可。
推荐的两种表达式写法
方式1:使用Java 8+日期API(更简洁)
app.s3-sink-rabbit.s3.key-expression="XYZ/abc/" + T(java.time.LocalDate).now().format(T(java.time.format.DateTimeFormatter).ofPattern("yyyyMMdd")) + "/" + headers.file_name
T(java.time.LocalDate).now():获取当前本地日期format(T(java.time.format.DateTimeFormatter).ofPattern("yyyyMMdd")):将日期格式化为YYYYMMDD格式的字符串- 最终会生成类似
XYZ/abc/20230110/your-file-name.txt的完整路径
方式2:使用传统日期API(兼容旧版本Java)
app.s3-sink-rabbit.s3.key-expression="XYZ/abc/" + new java.text.SimpleDateFormat("yyyyMMdd").format(new java.util.Date()) + "/" + headers.file_name
new java.util.Date():获取当前时间SimpleDateFormat("yyyyMMdd").format(...):将时间格式化为指定的日期字符串
注意事项
- 配置时注意引号格式:如果用双引号包裹整个表达式,内部字符串直接用双引号即可;如果用单引号包裹,内部的单引号需要替换为两个连续单引号(比如
''yyyyMMdd'') - S3会自动创建路径中不存在的层级文件夹,无需额外处理
内容的提问来源于stack exchange,提问作者Venu Gopal
相关产品推荐
相关产品推荐

