当前位置: 首页 > 知识库问答 >
问题:

如何获取Apache ignite缓存的数据

闾丘正志
2023-03-14

我是阿帕奇点燃新来的。我正在尝试填充缓存并从缓存读取。我创建了两个java项目,一个填充Apache ignite缓存,另一个打印缓存数据,但是打印缓存项目会出错。

public void run(String... arg0) throws Exception
{
    try (Ignite ignite = Ignition.start("ignite.xml"))
    {
        int iteration=0;

        while(true)
        {
            iteration++;
            IgniteCache<Object, Object> cache = ignite.getOrCreateCache("test cache " + iteration);
            System.out.println(""+100);
            System.out.println("Caching started for iteration " + iteration);
            printMemory();

            for (int i = 0; i < 100; i++)
            {
                cache.put(i, new CacheObject(i, "Cached integer " + i));
                System.out.println(i);
                Thread.sleep(100);

            }
            //cache.destroy();
            System.out.println("**************************************"+cache.size());
        }

    }


}
Ignition.setClientMode(true);
    IgniteConfiguration cfg = new IgniteConfiguration();        
    cfg.setPeerClassLoadingEnabled(true);
    TcpDiscoveryMulticastIpFinder discoveryMulticastIpFinder = new TcpDiscoveryMulticastIpFinder();
    Set<String> set = new HashSet<>();

    set.add("serverhost:47500..47509");
    discoveryMulticastIpFinder.setAddresses(set);

    TcpDiscoverySpi discoverySpi = new TcpDiscoverySpi();
    discoverySpi.setIpFinder(discoveryMulticastIpFinder);

    cfg.setDiscoverySpi(discoverySpi);

    cfg.setPeerClassLoadingEnabled(true);
    cfg.setIncludeEventTypes(EVTS_CACHE);
    Ignite ignite = Ignition.start(cfg);

    System.out.println("***************************************************\n"+ignite.cacheNames()+"\n****************************");
    CacheConfiguration<String, BinaryObject> cacheConfiguration = new CacheConfiguration<>(CACHE_NAME);
    IgniteCache<String, BinaryObject> cache = ignite.getOrCreateCache(cacheConfiguration).withKeepBinary();

共有1个答案

程承恩
2023-03-14

原因:class org.apache.ignite.spi.ignitespiException:本地节点的封送器与远程节点的封送器不同(要确保拓扑中的所有节点具有相同的封送器,请在配置中显式配置封送器)[locmarshaller=org.apache.ignite.internal.binary.binarymarshaller,rmtmarshaller=org.apache.ignite.marshaller.optimized.optimizedmarshaller

在ignite.xml中,您显式设置了marshaller。请检查xml配置文件中的 。您应该为集群中的所有节点配置相同的封送器,否则它们将无法通信。

 类似资料:
  • get 获取普通类型的值 // 获取key 为 gender 的数据 await this.app.redis.get('gender') type 获取数据类型 ctx.body = await this.app.redis.type('name') 返回 string lrange 获取 list 类型中所有数据 // 表示获取数组中所有的值 0 ,-1 ctx.body = await th

  • 我用ReactJS构建了一个渐进式Web应用程序,但遇到了一个问题。我正在使用mockApi获取数据。脱机时,我的应用程序不工作,因为服务人员只缓存静态资产。 如何将HTTP GET调用从mockApi保存到缓存存储?

  • 我使用ehcache-spring注释来缓存我的应用程序数据。为此,我有以下配置: 我想获取“net”的参考。旧金山。ehcache。CacheManager“超出配置的bean”ehCacheManager“。因此,我可以使用“CacheManager”直接在缓存中手动执行put或remove操作。 任何获取“net”引用的方法。旧金山。ehcache。CacheManager“出”组织。spr

  • 本文向大家介绍Android 获取应用缓存大小与清除缓存的方法,包括了Android 获取应用缓存大小与清除缓存的方法的使用技巧和注意事项,需要的朋友参考一下 如下所示: 以上这篇Android 获取应用缓存大小与清除缓存的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 我试图在使用JGit拉取回购时使用Kerberos身份验证,但出现以下错误: 来自Ticket Cache的空凭据 [Krb5LoginMoules]身份验证失败 这是我的登录名。形态 我使用自定义的JcshConfigSessionFactory和重写配置方法,如下所示 “klist”说凭证缓存是API(我在MacOS Sierra上)。我怎样才能克服这次失败?

  • 我有以下应用程序(我对这个框架很陌生),我想看到缓存大小(增加),因为它从队列中读取消息,但它一直保持为0。 有人能告诉我缺失了什么/错了什么吗? 谢谢!