Infinispan缓存放置在循环中不起作用

问题描述 投票:0回答:1

我正在使用嵌入式cachemanager,我试图将条目放入for循环中的缓存中,但是当下一个请求被触发时,我看到缓存为空。下面是我的实现-

EmbeddedCacheManager manager=null;
    {
        try {
            manager = new DefaultCacheManager("src/main/resources/infinispan.xml");


        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    Cache cache=manager.getCache();



for (JsonElement jsonElement : jsonArray)
            {
                 id=jsonElement.getAsJsonObject().get("_id").getAsString();
                  id1= id.replace("-","");
                JsonObject source = jsonElement.getAsJsonObject().getAsJsonObject("_src");
                String jsonString = source.toString();


                Dummy dummy = new Gson().fromJson(jsonString, Dummy.class);



                if(cache.get(id1)!=null){
                    retVal.add((Dummy) cache.get(id1));
                    System.out.println("This is cached !");
                }else {
                    cache.put(id1,dummy);
                    retVal.add(dummy);
                    System.out.println("This is not cached");
                }

            }
spring-boot caching infinispan
1个回答
0
投票

在启动器依赖项之前,将infinispan-bom添加到pom.xml文件中,如下所示:

<dependencyManagement>
    <dependencies>
       <dependency>
           <groupId>org.infinispan</groupId>
           <artifactId>infinispan-bom</artifactId>
           <version>${version.infinispan}</version>
           <type>pom</type>
           <scope>import</scope>
       </dependency>
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-parent</artifactId>
           <version>${version.spring.boot}</version>
           <type>pom</type>
           <scope>import</scope>
       </dependency>
       <dependency>
           <groupId>org.infinispan</groupId>
           <artifactId>infinispan-spring-boot-starter</artifactId>
           <version>${version.infinispan.starter}</version>
       </dependency>
    </dependencies>
 </dependencyManagement>
<dependency>
  <groupId>org.infinispan</groupId>
  <artifactId>infinispan-spring-boot-starter-embedded</artifactId>
  <version>${version.infinispan.starter}</version>
</dependency>

您的豆子应该有

private final EmbeddedCacheManager cacheManager;

@Autowired
public YourBean(EmbeddedCacheManager cacheManager) {
    this.cacheManager = cacheManager;
}

如果需要自定义EmbeddedCacheManager,请执行>

@Bean
public InfinispanCacheConfigurer cacheConfigurer() {
    return manager -> {
        final Configuration ispnConfig = new ConfigurationBuilder()
                        .clustering()
                        .cacheMode(CacheMode.LOCAL)
                        .build();

        manager.defineConfiguration("local-sync-config", ispnConfig);
    };
}

您会在https://infinispan.org/infinispan-spring-boot/master/spring_boot_starter.html找到很好的例子

© www.soinside.com 2019 - 2024. All rights reserved.