我正在将一个png文件发布到Mule中的HTTP入站端点。我想使用Java处理文件并将更改的图像存储在数据库中。我是否需要显式地将图像转换为另一种格式(例如使用Java对象转换为字节数组),或者Mule中是否有更简化的方法将图像传递给我的Java bean进行处理?骡子代码示例会有所帮助。
---更新---
根据Chad的回复,这是处理它的方法吗?我不确定代码看起来如何将它传递给我的Java bean。
<flow name="flow1" doc:name="flow1">
<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" doc:name="HTTP"/>
<object-to-byte-array-transformer doc:name="Object to Byte Array"/>
<???>
</flow>
答案 0 :(得分:2)
我相信你的有效载荷将是一个InputStream,所以你可能想要执行一个&lt; object-to-byte-array-transformer /&gt;得到byte [](如果这是你需要的)。
但是,根据您的使用情况,这可能会成为内存问题。如果我正在处理大量的500MB图像,那么将所有内容放在内存中可能会导致问题:)
因此,将这些转储到文件并处理文件可能是另一种可能性。
更新:Component和Transformer之间会有所不同,但这只是一个例子:
<flow name="flow1">
<http:inbound-endpoint host="localhost" port="8081"/>
<object-to-byte-array-transformer doc:name="Object to Byte Array"/>
<component>
<singleton-object class="com.my.CustomComponent"/>
</component>
</flow>
然后一个类就像:
public class CustomComponent implements Callable {
public Object onCall(MuleEventContext eventContext) throws Exception {
//Get at the payload by eventContext.getMessage().getPayload()
return eventContext.getMessage();
}
}