2015-06-28 35 views
2

我試圖用Spring Data Gemfire建立一個Gemfire集羣。彈簧數據Gemfire定位器

我可以通過gfsh開始定位,我可以通過Spring啓動服務器

問題是,我找不到通過Spring啓動定位器的方法。

回答

5

也許最簡單,最簡單的方法是在服務器中啓動一個「嵌入式」定位器。在測試或啓動具有一個或多個Spring配置的GemFire服務器的獨立羣集時,我經常使用這種技術。

的配置類似下面...

<util:properties id="gemfireProperties"> 
    <prop key="name">GemFireServerWithEmbeddedLocator</prop> 
    <prop key="mcast-port">0</prop> 
    <prop key="locators">localhost[11235]</prop> 
    <prop key="log-level">config</prop> 
    <prop key="start-locator">localhost[11235]</prop> 
</util:properties> 

<gfe:cache properties-ref="gemfireProperties"/> 

... 

注,2個相關的GemFire系統屬性是「定位器」屬性和「創業定位」屬性。 「啓動定位器」GemFire系統屬性是啓動GemFire Server中「嵌入式」定位器的配置設置。 「定位器」GemFire系統屬性只是告訴服務器哪個定位器聯繫加入羣集(當然由定位器決定)。

你甚至可以用下面的配置更復雜......

<util:properties id="gemfireProperties"> 
    <prop key="name">GemFireCacheServerManagerLocator</prop> 
    <prop key="mcast-port">0</prop> 
    <prop key="locators">localhost[11235]</prop> 
    <prop key="log-level">config</prop> 
    <prop key="http-service-port">8181</prop> 
    <prop key="jmx-manager">true</prop> 
    <prop key="jmx-manager-port">1199</prop> 
    <prop key="jmx-manager-start">true</prop> 
    <prop key="start-locator">localhost[11235]</prop> 
</util:properties> 

<gfe:cache properties-ref="gemfireProperties"/> 

<gfe:cache-server auto-startup="true" bind-address="${server.bind.address}" port="${server.port}" host-name-for-clients="${server.hostname.for.clients}" max-connections="${server.max.connections}"/> 

在這種配置中,我已經告訴了GemFire服務器啓動的「嵌入」定位符(「啓動定位器」),並連接(「定位器」),作爲羣集中的GemFire Manager(「jmx-manager」),然後啓動管理服務(「jmx-manager-start」),最後啓動「嵌入式」HTTP服務,使用Jetty(「http-service-port」)實現,它將啓動Pulse,管理REST API以及開發人員REST API。

不僅如此,憑藉「」元素,GemFire Server也將成爲偵聽並提供緩存客戶端的「緩存服務器」。

一旦服務器的GemFire啓動「嵌入」定位器(或可選的的GemFire管理服務(一個經理),以及),您可以連接到它在Gfsh是這樣的...

gfsh>connect --locator=localhost[11235] 

或者,如果你開始的管理服務,您可以用...

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

注意直接連接到管理中心,連接請求從Gfsh定位器只是將集羣中的「定位」經理的請求。如果集羣中有管理器,則定位器發回管理器的座標(IP /端口),否則定位器將承擔管理器的角色(定位器的默認設置爲jmx-manager = start),並將響應發送回Gfsh。然後,Gfsh將直接向Manager創建一個新的JMX-RMI連接。因此,如果您知道IP和端口,那麼使用'connect --jmx-manager'會更直接。

還要注意,在的GemFire「定位器」系統屬性可以是逗號分隔像這樣定位器的列表...

locators=host1[port1],host2[port2],...,hostN[portN] 

然而,「創業定位」的GemFire系統屬性只是一個主機[端口],因爲你只能有1個「嵌入式」定位器。

現在,您可以啓動Locator的另一種方式是使用Spring FactoryBean。一段時間後,我創建了一個基於GemFire的LocatorLauncher公共Java API類的LocatorLauncherFactoryBean。

這個類是客戶演示Locator如何在Spring環境中配置和啓動的原型。我計劃最終在Spring上下文中引入對配置定位器的正式支持,但與其他門票相比,此JIRA門票的優先級較低。

查看SGF-222瞭解更多詳情。您還會發現連接到JIRA票證的LocatorLauncherFactoryBean類。隨意使用和調整你的目的。

同樣,LocatorLauncherFactoryBean是一個原型,並且在實際的GemFire LocatorLauncher類中支持大範圍的配置設置並不是很完整。

希望這有助於;乾杯!