如何使用mule esb在磁盘上存储地图?

时间:2015-02-07 13:19:14

标签: java mule esb

我在Mule ESB中定义了一张地图:

<spring:bean name="requestsMap" class="java.util.HashMap" scope="singleton"/>

我需要将此映射存储在磁盘上,以便应用程序/服务器崩溃不会损坏映射中的数据。但我不知道怎么办?

任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:1)

您可以使用file-endpoint。该文档还包括更完整的examples

只需将地图设置为文件端点之前的有效负载。

答案 1 :(得分:1)

作为替代方案,请尝试 org.clapper javautil的FileHashMap。它将地图数据存储到文件中。你的spring bean声明应该是这样的:

<spring:bean name="requestsMap" class="org.clapper.util.misc.FileHashMap">
      <constructor-arg type="java.lang.String" value="filepath"/>
   </spring:bean>

(未经过测试的代码)

在maven中插入以下依赖项:

<dependency>
  <groupId>org.clapper</groupId>
  <artifactId>javautil</artifactId>
  <version>3.1.2</version>
</dependency>

和存储库:

<repositories>
  <repository>
    <releases>
      <enabled>true</enabled>
      <updatePolicy>always</updatePolicy>
      <checksumPolicy>warn</checksumPolicy>
    </releases>
    <id>clapper-org-maven-repo</id>
    <name>org.clapper Maven Repo</name>
    <url>http://maven.clapper.org/</url>
    <layout>default</layout>
  </repository>
  ...
</repositories>

我认为实现不是线程安全的(我不确定),所以要小心将它用作单例。

检查库website以获取更多信息。希望它有所帮助。

答案 2 :(得分:1)

另一种解决方案是使用MapDB:http://www.mapdb.org/

答案 3 :(得分:0)

使用文件出站端点会将有效负载存储在文件中:

<file:outbound-endpoint path="/somePath" responseTimeout="10000" />

但是这将在您的流程中的某个点执行,因此如果机器在该点之前崩溃,则不会保存地图。

对于这种要求最好使用持久性存储,请提供有关您的应用的一些上下文,以了解如何使用它们。

此致 马科斯