为了账号安全,请及时绑定邮箱和手机立即绑定

MD5 作为 Apache Camel 中的幂等键

MD5 作为 Apache Camel 中的幂等键

侃侃尔雅 2022-06-15 16:44:08
默认行为是使用绝对文件路径来唯一标识文件 - 我想自定义它以使用文件的 md5 校验和。是否可以简单地实现自定义幂等键(不使用“文件语言”)?
查看完整描述

1 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

Camel File2 组件支持可插入表达式。创建实现Expression的bean并将其传递给带有idempotentKey=#myExpressionBean.


我不认为,为每次轮询计算文件内容的 md5 哈希值是个好主意,但这是可能的。


表达


@Component

class FileContentMD5Expression implements Expression {

    @Override

    public <T> T evaluate(Exchange exchange, Class<T> type) {

        if (type != String.class){

            throw new IllegalArgumentException("This is String only expression");

        }

        try (FileInputStream fis = new FileInputStream(((File)exchange.getIn(GenericFileMessage.class).getGenericFile().getFile()))) {

            return type.cast(DigestUtils.md5Hex(fis));

        } catch (IOException e) {

            throw new RuntimeException(e);

        }

    }

}

消费者


from("file://somewhere?idempotent=true&idempotentKey=#fileContentMD5Expression")


查看完整回答
反对 回复 2022-06-15
  • 1 回答
  • 0 关注
  • 144 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号