首页 > 解决方案 > 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>

标签: apache-camelinfinispan

解决方案


它正在为每个段创建一个文件(内部缓存是按段组织的)。默认值为 256。这使得诸如迭代之类的操作更快。您可以通过向元素添加segmented="false"属性来禁用商店级别的分段file-store


推荐阅读