如何获取Apache点燃的缓存数据



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

这是我用来填充缓存的代码

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();

这两个代码在不同的项目中是平和的,所以当第一个项目填充缓存时,我正试图从另一个项目访问缓存下面的错误是在我尝试访问缓存数据时发生的

从读取缓存并打印的代码返回的错误

2018年8月1日上午9:25:25 org.apache.initure.logger.JavaLogger错误严重:无法启动管理器:GridManagerAdapter[enabled=true,name=o.a.i.i.managers.discovery.GridDiscoveryManager]class org.apache.InitureCheckedException:无法启动SPI:TcpDiscoverySpi[addrRslvr=null,sockTimeout=5000,ackTimeout=500,reconCnt=10,maxAckTimeout=600000,forceSrvMode=false,clientReconnectDisabled=false]网址:org.apache.internal.managers.GridManagerAdapter.startSpi(GridManagerAdapter.java:258(网址:org.apache.internal.managers.decovery.GridDiscoveryManager.start(GridDiscoveryManager.java:660(位于org.apache.internal.InitieKernal.startManager(IgniteKernal.java:1505(网址:org.apache.internal.InitieKernal.start(IgniteKernal.java:917(在org.apache.internal.InitionEx$IgniteNamedInstance.start0(IgnitionEx.java:1688(位于org.apache.internal.InitionEx$IgniteNamedInstance.start(IgnitionEx.java:1547(位于org.apache.internal.InitionEx.start0(IgnitionEx.java:1003(位于org.apache.internal.InitionEx.start(IgnitionEx.java:534(位于org.apache.internal.InitionEx.start(IgnitionEx.java:515(网址:org.apache.inignit.Inition.start(Ignition.java:322(在测试中。App.main(App.java:76(由以下原因引起:class org.apache.Initure.spi.InitiesPi异常:本地节点的编组器与远程节点的编组程序不同(为了确保拓扑中的所有节点都具有相同的编组器,请在配置中显式配置编组器([locMarshaller=org.apache.initure.internal.binary.BinaryMarshaller,rmtMarshaller=org.apache.inniture.marshaller.OptimizedMarshaller=[1192.168.1.71/0:0:0:0:1%lo,/120.0.1,/16192.168.1.71],locPort=0,rmtNodeAddr=[1192.168.1.71/0:0:0:0:0:0:1%lo,/127.0.0.1,/192.168.1.71];locNodeId=b41f0d09-5a7f-424b-b3b5-420a5e1acdf6,rmtNode Id=ff436f20-5d4b-477e-aade-837d59b1ea7]网址:org.apache.inignet.spi.decovery.tcp.TcpDiscoverySpi.checkFailedError(TcpDiscoverySpi.java:1647(网址:org.apache.iignet.spi.discovery.tcp.ClientImpl$MessageWorker.body(ClientImpl.java:1460(在org.apache.iignite.spi.IigniteSpiThread.run(IgniteSpiThread.java:62(

由:class org.apache.initure.spi.IgniteSpi引起异常:本地节点的编组器与远程节点的编组程序不同(为了确保拓扑中的所有节点都具有相同的编组器,请在配置中显式配置编组器([locMarshaller=org.apache.initure.internal.binary.BinaryMarshaller,rmtMarshaller=org.apache.Initure.marshaller.OptimizedMarshaller

在ignlight.xml中,您似乎已显式设置了marshaller。请检查xml配置文件中的<property name="marshaller">。应该为集群中的所有节点配置相同的整理器,否则它们将无法通信。

最新更新