我无法使 Spring Boot 和 Hazelcast 集群工作



我正在尝试在spring-boot集群应用程序中使用共享缓存。似乎一切都在工作,但当我试图从实例,它不会从缓存的值中获取。

似乎每个应用程序都在使用自己的缓存,而不是共享它。

我遵循了这里的指导方针来设置一个简单的环境https://hazelcast.com/blog/spring-boot/

我的代码:

Controller.java
@Controller
@RequestMapping("/public/testcache")
public class TestCacheController {
@Autowired
BookService bookService;
@GetMapping("/get/{isbn}")
@ResponseBody
public String getBookNameByIsbn(@PathVariable("isbn") String isbn) {
return bookService.getBookNameByIsbn(isbn);
}
@GetMapping("/clear/cache")
@ResponseBody
public String clearCache() {
bookService.deleteCache();
return "done";
}
}

BookService.java
@Service
public class BookService {
@Cacheable("books")
public String getBookNameByIsbn(String isbn) {
return findBookInSlowSource(isbn);
}
private String findBookInSlowSource(String isbn) {
// some long processing
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "Sample Book "+isbn;
}
@CacheEvict(value = {"books"}, allEntries = true)
public void deleteCache() {}
}

# hazelcast.yaml
hazelcast:
network:
join:
multicast:
enabled: true

当我启动应用程序时,我总是得到正确的输出:

Members {size:2, ver:2} [
Member [192.168.178.107]:5702 - d53f2c3f-d66f-4ba3-bf8d-88d4935bde4e
Member [192.168.178.107]:5701 - 69860793-c420-48d3-990c-d0c30a3a92d6 this
]

我试过了:

  1. 在不同端口上运行两个Spring Boot应用程序

  2. 在不同端口上运行两个tomcat

  3. 用java配置替换yaml配置

    Java Based Configuration
    @Configuration
    @EnableCaching
    public class CacheConfigurator {
    @Bean
    public Config config() {
    Config config=new Config();
    config.getNetworkConfig().getJoin().getMulticastConfig().setEnabled(true);
    return config;
    }
    }
    

每次我得到相同的结果时,每个应用程序似乎都会自己缓存。

附加信息:

  • 我试着使用管理中心https://hazelcast.com/product-features/management-center/并且我可以连接到集群成员,但我从未在"下看到任何值;映射">
  • 我想知道hazelcast的实例是否已经启动,但spring boot没有使用它,而是使用了他自己的简单缓存
  • 我的application.properties为空
  • 弹簧引导版本2.4.4

也许您的每个Spring Boot应用程序实际上都创建了两个独立的Hazelcast实例,并且它使用的不是集群实例进行缓存。

请尝试遵循以下指南:

  • Hazelcast指南:使用Spring Boot开始Hazelccast
  • Hazelcast指南:使用Spring Boot和Hazelccast进行缓存

最新更新