私はApacheigniteの初心者です。キャッシュにデータを入力してキャッシュから読み取ろうとしています。2つのJavaプロジェクトを作成しました。1つはApacheigniteキャッシュにデータを入力し、もう1つはキャッシュデータを印刷しますが、キャッシュプロジェクトを印刷するとエラーが発生します。
これが私がキャッシュにデータを投入するために使用するコードです
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();
この2つのコードは別のプロジェクトにあるため、最初の1つのプロジェクトがキャッシュにデータを入力しているときに、別のプロジェクトからキャッシュにアクセスしようとすると、キャッシュされたデータにアクセスしようとすると次のエラーが発生します。
キャッシュを読み取って出力するコードから返されるエラー
2018年8月1日9:25:25 AM org.apache.ignite.logger.java.JavaLoggerエラー重大:マネージャーの開始に失敗しました:GridManagerAdapter [enabled = true、name = oaiimanagers.discovery.GridDiscoveryManager]クラスorg.apache.ignite。 IgniteCheckedException:SPIの開始に失敗しました:org.apache.ignite.internal.managers.GridManagerAdapterのTcpDiscoverySpi [addrRslvr = null、sockTimeout = 5000、ackTimeout = 5000、reconCnt = 10、maxAckTimeout = 600000、forceSrvMode = false、clientReconnectDisabled = false]。 startSpi(GridManagerAdapter.java:258)at org.apache.ignite.internal.managers.discovery.GridDiscoveryManager.start(GridDiscoveryManager.java:660)at org.apache.ignite.internal.IgniteKernal.startManager(IgniteKernal.java:1505) org.apache.ignite.internal.IgniteKernal.start(IgniteKernal.java:917)でorg.apache.ignite.internal.IgnitionEx $ IgniteNamedInstance.start0(IgnitionEx.java:1688)org.apache.ignite.internal.IgnitionEx $ IgniteNamedInstance.start(IgnitionEx.java:1547)at org.apache.ignite.internal.IgnitionEx.start0(IgnitionEx.java:1003)at org.apache.ignite.internal .IgnitionEx.start(IgnitionEx.java:534)at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:515)at org.apache.ignite.Ignition.start(Ignition.java:322)attest。 App.main(App.java:76)原因:クラスorg.apache.ignite.spi.IgniteSpiException:ローカルノードのマーシャラーがリモートノードのマーシャラーと異なります(トポロジ内のすべてのノードが同一のマーシャラーを持つようにするには、構成でマーシャラーを明示的に構成します) [locMarshaller = org.apache.ignite.internal.binary.BinaryMarshaller、rmtMarshaller = org.apache.ignite.marshaller.optimized.OptimizedMarshaller、locNodeAddrs = [192.168.1.71 / 0:0:0:0:0:0:0: 1%lo、/ 127.0.0.1、/ 192.168.1.71]、locPort = 0、rmtNodeAddr = [192.168.1.71 / 0:0:0:0:0:0:1:1%lo、/ 127.0.0.1、/ 192.168.1.71]、locNodeId = b41f0d09-5a7f-424b-b3b5-420a5e1acdf6、rmtNodeId = ff436f20-5d4b-477e-aade-837d59b1eaa7] at org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi.checkFailedError(TcpDiscoverySpi.java:1647)at org.apache.ignite.spi.discovery.tcp.ClientImpl $ Message body(ClientImpl.java:1460)at org.apache.ignite.spi.IgniteSpiThread.run(IgniteSpiThread.java:62)
原因:クラスorg.apache.ignite.spi.IgniteSpiException:ローカルノードのマーシャラーがリモートノードのマーシャラーと異なります(トポロジ内のすべてのノードが同一のマーシャラーを持つようにするには、構成でマーシャラーを明示的に構成します)[locMarshaller = org.apache.ignite.internal .binary.BinaryMarshaller、rmtMarshaller = org.apache.ignite.marshaller.optimized.OptimizedMarshaller
ignite.xmlで、マーシャラーを明示的に設定したように見えます。<property name="marshaller">
xml設定ファイルをチェックインしてください。クラスター内のすべてのノードに同じマーシャラーを構成する必要があります。そうしないと、ノードは通信できなくなります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加