Spring Data Gemfire定位器

时间:2015-06-28 12:27:39

标签: java spring spring-data-gemfire geode

我正在尝试使用Spring Data Gemfire设置Gemfire群集。

我可以通过 gfsh 启动定位器,我可以通过Spring启动服务器

问题是,我找不到通过Spring启动定位器的方法。

1 个答案:

答案 0 :(得分: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系统属性是“locators”属性和“start-locator”属性。 “start-locator”GemFire System属性是在GemFire服务器中启动“嵌入式”定位器的配置设置。 “定位器”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管理器(“jmx-经理“)然后启动管理服务(”jmx-manager-start“),最后启动”嵌入式“HTTP服务,用Jetty(”http-service-port“)实现,这将启动Pulse,管理REST API以及Developer REST API。

不仅如此,使用“”元素,GemFire服务器也将成为监听和服务缓存客户端的“缓存服务器”。

一旦GemFire服务器启动“嵌入式”定位器(或者可选择GemFire管理服务(管理器)),您可以在Gfsh中连接它,就像这样......

gfsh>connect --locator=localhost[11235]

或者,如果您启动了管理服务,则可以使用...

直接连接到Manager
gfsh>connect --jmx-manager=localhost[1199]

注意,从Gfsh到Locator的连接请求只是发送一个请求来“定位”集群中的Manager。如果群集中有管理器,则定位器会发回管理器的坐标(IP /端口),否则定位器将承担管理员的角色(定位器默认设置jmx-manager = start)并将响应发送回Gfsh。然后,Gfsh将直接与Manager形成新的JMX-RMI连接。因此,如果您知道IP和PORT,使用'connect --jmx-manager'会更直接。

另请注意,GemFire“locators”系统属性可以是逗号分隔的Locator列表,如此...

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

但是,“start-locator”GemFire System属性只是一个主机[端口],因为你只能有1个“嵌入式”定位器。

现在,您可以使用Spring FactoryBean启动Locator的另一种方式。不久前,我基于GemFire的LocatorLauncher公共Java API类创建了一个LocatorLauncherFactoryBean。

此类是客户的原型,用于演示如何在Spring上下文中配置和启动Locator。我计划最终在Spring上下文中引入正式支持定位器,但是与其他票证相比,这个JIRA票证的优先级较低。

有关详细信息,请参阅SGF-222。您还将找到附加到JIRA票证的LocatorLauncherFactoryBean类。随意使用和调整以达到您的目的。

同样,LocatorLauncherFactoryBean是一个原型,并且几乎不完整,它支持实际GemFire LocatorLauncher类的各种配置设置。

希望这会有所帮助;干杯!