我在Mule ESB中定义了一张地图:
<spring:bean name="requestsMap" class="java.util.HashMap" scope="singleton"/>
我需要将此映射存储在磁盘上,以便应用程序/服务器崩溃不会损坏映射中的数据。但我不知道怎么办?
任何帮助将不胜感激。
答案 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" />
但是这将在您的流程中的某个点执行,因此如果机器在该点之前崩溃,则不会保存地图。
对于这种要求最好使用持久性存储,请提供有关您的应用的一些上下文,以了解如何使用它们。
此致 马科斯