0

我正在尝试添加到我正在使用 JCache 兼容技术的应用程序的当前实现中。目前,我已经能够使用 Apache Ignite 并让它与几个缓存一起使用缓存存储的实现来读取和写入数据库。写入是使用批量写入完成的。一些配置不是 JCache 的一部分,但我已经能够通过 Ignite 提供的 MutableConfiguration 扩展类添加它。此外,我已经使用没有任何 CacheProvider 或 CacheManager 的 Spring 完成了这项工作,因此在我的配置类中,我将缓存直接公开为 bean。我从接受我的配置类并允许我按名称获取缓存的 Ignite 类中获取它们。现在我正在尝试将此配置移植到 Hazelcast,但我遇到了问题。

首先,我无法找到一种方法来在没有 xml 文件的情况下以编程方式配置缓存。我发现的所有示例都使用了 CacheManager,该 CacheManager 采用带有此文件路径的 Properties 对象。如果我将路径传递给类而不是 xml,它会起作用吗?

我已经看到用于配置 HazelcastInstance 的 Config.class 接受 CacheSimpleConfig 但是,HazelcastInstance 没有 getCache 方法或类似方法。如果我以这种方式配置缓存,那么如何从 HazelcastInstance 获取缓存?

最后一件事,我注意到没有与配置缓存相关的文档,仅适用于地图。这不可能吗?缓存只允许写入吗?

谢谢!

4

1 回答 1

3
  1. 由于 write-behind 不在当前的 JCache 规范中。它也不在 Hazelcast 中。从 Ignite 的文档中,

“Ignite 提供了 org.apache.ignite.cache.store.CacheStore 接口,它扩展了 CacheLoader 和 CacheWriter。”

这意味着您必须使用 Ignite 的专有 API 来获得后写功能。恕我直言,使用 JCache 是没有用的,因为在这种情况下您将锁定供应商。JCache 规范的目标是结束所有专有的缓存 API。

如果您想使用专有 API,那么我建议您使用 HazelcastIMap来获得后写功能。

  1. 您可以在创建缓存时以编程方式传递缓存配置;

Caching.getCachingProvider().getCacheManager().createCache("cache", cacheConfig);

下面的示例项目也很有用;

https://github.com/hazelcast/hazelcast-code-samples/tree/master/hazelcast-integration/spring-jcache

它显示了 XML 和 Java 配置。

于 2016-01-14T11:42:00.543 回答