Mule 3哈希转换至Mule 4遇问题,求等效实现方案
Mule 3 代码对应的 Mule 4 等效实现
原Mule 3表达式组件的作用是将Payload转换为UTF-8编码的字节数组,通过Guava的SHA-1哈希工具生成哈希值后,将结果赋值回Payload。以下是两种Mule 4的等效实现方案:
方式1:使用DataWeave(推荐,符合Mule 4最佳实践)
Mule 4内置加密功能,无需额外依赖Guava,直接用DataWeave的hash函数实现:
%dw 2.0 output application/octet-stream --- hash('SHA-1', payload as Binary {encoding: "UTF-8"})
如果需要将哈希结果转为十六进制字符串输出,可调整为:
%dw 2.0 output application/json --- hash('SHA-1', payload as Binary {encoding: "UTF-8"}) toHex()
方式2:沿用Guava依赖,使用Script组件
若需继续使用Guava库,Mule 4中用Script组件替代原expression-component,需确保项目已引入Guava依赖:
<script doc:name="TECH_Heroku_PartKey" engine="groovy"> <![CDATA[ import com.google.common.hash.Hashing; def payloadBytes = payload.getBytes("UTF-8"); return Hashing.sha1().hashBytes(payloadBytes); ]]> </script>
注意:Mule 4的Script组件需指定脚本引擎(此处用Groovy),且通过return返回结果作为新Payload,而非直接赋值给payload变量。
内容的提问来源于stack exchange,提问作者Devendra
相关产品推荐
相关产品推荐

