如何在Mule ESB中将文件转换为字节数组?

时间:2014-03-08 20:25:28

标签: java image-processing mule mule-studio

我正在将一个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>

1 个答案:

答案 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();
  }
}