2017-01-13 2 views
0

Ich arbeite an einem Projekt, das eine Anforderung von Pivotal GemFire ​​hat. Ich kann kein richtiges Tutorial finden, wie man gemFire ​​mit Spring Boot konfiguriert.GemFire ​​- Spring Boot Konfiguration

Ich habe eine partitionierte Region erstellt und ich möchte auch Locators konfigurieren, aber ich brauche nur serverseitige Konfiguration, da der Client von jemand anderem bearbeitet wird.

Ich bin völlig neu in Pivotal GemFire ​​und wirklich verwirrt. Ich habe versucht, eine cache.xml zu erstellen, aber dann wird irgendwie eine cache.out.xml erstellt und es gibt viele Probleme.

+0

Auch ich kann nicht verwenden gfsh-Befehle, ich muss Eigenschaften Dateien oder hart codiert haben. –

Antwort

1

@ Priyanka-

beste Ausgangspunkt ist mit den Guides auf spring.io. Insbesondere haben einen Blick auf ...

"Accessing Data with GemFire"

Es ist auch ...

"Cache Data with GemFire" und ...

"Accessing GemFire Data with REST"

jedoch Diese Anleitungen konzentrieren sich hauptsächlich auf "clientseitige" Anwendungsanliegen, "Datenzugriff" (über REST), "Caching" usw.

Noch können Sie Spring Data GemFire ​​ (in einer Spring Boot Anwendung sogar) verwenden, um einen GemFire ​​Server zu konfigurieren. Ich habe viele Beispiele dafür. Ein insbesondere ...

"Spring Boot GemFire Server Example"

Dieses Beispiel zeigt, wie eine Frühlings-Boot Anwendung als GemFire ​​Server (technisch, ein Peer-Knoten im Cluster) Bootstrap. Darüber hinaus werden die GemFire ​​Eigenschaften Frühling Config festgelegt und kann Spring normalen Konventionen (Eigenschaft Platzhalter, Spel Ausdruck), um diese Eigenschaften zu konfigurieren verwenden, wie so ...

https://github.com/jxblum/spring-boot-gemfire-server-example/blob/master/src/main/java/org/example/SpringBootGemFireServer.java#L59-L84

Diese besondere Konfiguration der macht GemFire ​​Server ein "GemFire ​​Manager", möglicherweise mit einem eingebetteten "Locator" (angezeigt durch die GemFie-Eigenschaft start-locator, nicht zu verwechseln mit der GemFire-Eigenschaft "Locators", die unserem Knoten erlaubt, "existierender" Cluster) sowie a GemFire CacheServer, um GemFire-Cache-Clients zu bedienen (mit einem ClientCache).

In diesem Beispiel wird eine "Factorials" Region mit einer CacheLoader (Definition here) erstellt, um die "Factorials" -Region bei Cache-Fehlern zu füllen.

Da in diesem Beispiel beginnt ein eingebettetes GemFire-Manager in der Frühlings-Boot GemFire ​​Server-Anwendung Prozess, können Sie auch eine Verbindung zu ihm Gfsh, mit wie so ...

gfsh> connect --jmx-manager=localhost[1099]

Dann können Sie laufen „bekommt“ auf der „Factorial“ Region, um es factorials der numerischen Tasten berechnen sehen Sie es geben.

Um erweiterte Konfiguration zu sehen, sehen Sie sich meine anderen Repos, insbesondere die Kontakte Anwendung RI (here).

Hoffe, das hilft!

-Johannes

0

Nun, ich hatte das gleiche Problem, lassen Sie mich mit Ihnen teilen, was für mich gearbeitet, in diesem Fall bin ich mit Spring-Boot und Pivotal GemFire ​​als Cache-Client.

  1. Install und laufen GemFire ​​
  2. Lesen Sie die 15 minutes quick start guide
  3. einen Locator erstellen (nennen wir es locator1) und einem Server() und einen Bereich (region1)
  4. Gehen Sie zu dem Ordner, in dem Sie gestartet die 'Gee Fisch' (gfsh) und dann zum Locator-Ordner gehen und öffnen Sie die Protokolldatei, in dieser Datei können Sie den Port Ihren Locator verwenden.

Jetzt wollen wir den Frühling Boot-Seite sehen:

  1. In Ihnen Anwendung mit dem main Methode fügen Sie die @EnablegemFireCaching Anmerkung
  2. Bei dem Verfahren (wo auch immer es ist), den Sie cachen möchten, fügen Sie den @Cacheable("region1") Anmerkung.
  3. Lassen Sie sich jetzt erstellen Konfigurationsdatei für das Caching:

    // dies ist meine Arbeiterklasse

    @Configuration public class CacheConfiguration {

    @Bean 
    ClientCacheFactoryBean gemfireCacheClient() { 
        return new ClientCacheFactoryBean(); 
    } 
    
    @Bean(name = GemfireConstants.DEFAULT_GEMFIRE_POOL_NAME) 
    PoolFactoryBean gemfirePool() { 
    
        PoolFactoryBean gemfirePool = new PoolFactoryBean(); 
    
        gemfirePool.addLocators(Collections.singletonList(new ConnectionEndpoint("localhost", HERE_GOES_THE_PORT_NUMBER_FROM_STEP_4))); 
        gemfirePool.setName(GemfireConstants.DEFAULT_GEMFIRE_POOL_NAME); 
        gemfirePool.setKeepAlive(false); 
        gemfirePool.setPingInterval(TimeUnit.SECONDS.toMillis(5)); 
        gemfirePool.setRetryAttempts(1); 
        gemfirePool.setSubscriptionEnabled(true); 
        gemfirePool.setThreadLocalConnections(false); 
    
        return gemfirePool; 
    } 
    
    @Bean 
    ClientRegionFactoryBean<Long, Long> getRegion(ClientCache gemfireCache, Pool gemfirePool) { 
        ClientRegionFactoryBean<Long, Long> region = new ClientRegionFactoryBean<>(); 
        region.setName("region1"); 
        region.setLookupEnabled(true); 
        region.setCache(gemfireCache); 
        region.setPool(gemfirePool); 
        region.setShortcut(ClientRegionShortcut.PROXY); 
    
        return region; 
    } 
    

    das ist alles !, auch Vergessen Sie nicht zu serialisieren (implements Serializable) die Klasse wird zwischengespeichert (Die Klasse, die Ihre zwischengespeicherte Methode zurückgibt)

Verwandte Themen