apache-camel - Infinispan 文件存储创建包含多个 .dat 文件的二进制文件夹
问题描述
我正在使用下面的 infinispan 配置文件并遇到了一个奇怪的问题。在启动时,应用程序会创建多个文件夹(字节数组 0 到 255 的每个数字一个),每个文件夹都包含 .dat 文件(在我的例子中是 idempotent.dat)。对于所有创建的文件,文件的内容也是 FCS1。
我所期待的是它将创建一个包含所有缓存对象的单个文件( /ap/efts/data/stage/cache/idempotent.dat )。有人可以确定导致此问题的原因吗?我正在使用 camel-infinispan 组件来创建基于 Infinispan 的幂等存储库。
注意:这在 infinispan 7.0 版中可以正常工作。作为参考,我还提供了 infinispan 7.0 配置文件以及幂等存储库的 spring bean 配置。
infinispan.xml (10.0)
<?xml version="1.0" encoding="UTF-8"?>
<infinispan xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:infinispan:config:10.0 http://www.infinispan.org/schemas/infinispan-config-10.0.xsd"
xmlns="urn:infinispan:config:10.0">
<cache-container default-cache="idempotent">
<local-cache name="idempotent">
<expiration lifespan="1800000" max-idle="1800000" interval="60000" />
<persistence passivation="true">
<file-store path="/ap/efts/data/stage/cache" purge="true">
<write-behind thread-pool-size="5" />
</file-store>
</persistence>
<memory>
<binary eviction="MEMORY" size="1000000" />
</memory>
</local-cache>
</cache-container>
</infinispan>
infinispan.xml (7.0)
<?xml version="1.0" encoding="UTF-8"?>
<infinispan xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:infinispan:config:7.0 http://www.infinispan.org/schemas/infinispan-config-7.0.xsd"
xmlns="urn:infinispan:config:7.0">
<cache-container default-cache="default">
<local-cache name="idempotent">
<eviction max-entries="10000" strategy="LIRS"/>
<persistence passivation="false">
<file-store path="/ap/efts/data/stage/cache" max-entries="10000" purge="false">
</file-store>
</persistence>
</local-cache>
</cache-container>
</infinispan>
弹簧豆配置
<bean id="cacheManager" class="org.infinispan.manager.DefaultCacheManager" init-method="start" destroy-method="stop">
<constructor-arg type="java.lang.String" value="infinispan.xml"/>
</bean>
<bean id="infinispanRepo" class="org.apache.camel.component.infinispan.processor.idempotent.InfinispanIdempotentRepository"
factory-method="infinispanIdempotentRepository">
<constructor-arg ref="cacheManager" />
<constructor-arg value="idempotent" />
</bean>
解决方案
它正在为每个段创建一个文件(内部缓存是按段组织的)。默认值为 256。这使得诸如迭代之类的操作更快。您可以通过向元素添加segmented="false"
属性来禁用商店级别的分段file-store
推荐阅读
- css - 将汉堡菜单(从右侧滑入)与手风琴式菜单相结合
- google-bigquery - Google BigQuery Import csv Using Console - 使用第一行作为标题
- laravel - Laravel 5. 合并多个 Builder 以使用“paginate()”对它们进行分页
- mysql - 处理程序调度失败;嵌套异常是 java.lang.NoSuchMethodError: org.hibernate.Session.get(Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/Ob
- tcl - 如何在 tcl/tk 窗口中显示 html 页面?
- c# - Ajax Post 在页面模型中找不到方法
- excel - 如何编码“如果文本框不为空,则消息框“无效”
- android-notifications - 当应用显示超过 4 个通知时,Android 通知未正确更新
- jquery - 如何使用 jQuery 更改现有代码中的样式元素?
- macos - 公证 .zip 文件