2017-08-29 2 views
0

ich zu einem Geode-Server auf einem anderen Rechner anschließen:Geode nativen Client RegisterAllKeys produziert NotConnectedException

CacheFactory cacheFactory = CacheFactory.CreateCacheFactory(); 

Cache c = cacheFactory 
    .AddServer("x.x.x.x", 40404) 
    .SetSubscriptionEnabled(true) 
    .Create(); 

RegionFactory regionFactory = c.CreateRegionFactory(RegionShortcut.CACHING_PROXY); 

IRegion<string, string> r = regionFactory.Create<string, string>("r"); 

Nun, wenn ich versuchen, einen Eintrag setzen dann funktioniert es. Allerdings, wenn ich versuche und zu Veranstaltungen in der Region r abonnieren, indem Sie mit:

r.GetSubscriptionService().RegisterAllKeys(); 

dann wirft dies ein NotConnectedException

Was bin ich hier bitte? Danke ...

Antwort

0

Ich stellte fest, dass das Problem damit zu tun hatte, dass CacheFactory.create() einen Standardverbindungspool hinter den Kulissen einrichtet und dieser Standardpool möglicherweise nicht mit dem Serververbindungspool kompatibel ist.

So nach mit connection pool code haben einen Pool Fabrik einzurichten und festgelegt, dass Abonnements zu erhalten, wie:

CacheFactory cacheFactory = CacheFactory.CreateCacheFactory(); 
Cache c = cacheFactory.Create(); 

PoolFactory poolFactory = PoolManager 
    .CreateFactory() 
    .SetSubscriptionEnabled(true) 
    .AddLocator("x.x.x.x", 10334); 
Pool pool = null; 
if (PoolManager.Find("myPool") == null) 
    pool = poolFactory.Create("myPool"); 

int loadConditInterval = pool.LoadConditioningInterval; 

RegionFactory regionFactory = c.CreateRegionFactory(RegionShortcut.CACHING_PROXY); 

IRegion<string, string> r = regionFactory.SetPoolName("myPool").Create<string, string>("r"); 

r.GetSubscriptionService().RegisterAllKeys(); 

r.AttributesMutator.SetCacheListener(new MyListener<string, string>()); 

wo MyListener das entsprechende Ereignisabonnement Griffe zu event handling

Verwandte Themen