【问题标题】:How to configure Hazelcast using JCache programmatically and using writw behind?如何以编程方式使用 JCache 并使用 writw 配置 Hazelcast?
【发布时间】:2016-01-13 17:51:06
【问题描述】:

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

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

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

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

谢谢!

【问题讨论】:

    标签: java hazelcast in-memory-database jcache


    【解决方案1】:
    1. 因为后写不在当前的 JCache 规范中。它也不在 Hazelcast 中。 根据 Ignite 的文档,

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

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

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

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

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

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

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

    它同时显示 XML 和 Java 配置。

    【讨论】:

      猜你喜欢
      • 2015-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-27
      • 1970-01-01
      相关资源
      最近更新 更多