Spring Data Gemfire定位器

Dan*_*iel 2 java spring spring-data-gemfire geode

我正在尝试使用Spring Data Gemfire建立一个Gemfire集群.

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

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

Joh*_*lum 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"/>

...
Run Code Online (Sandbox Code Playgroud)

注意,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}"/>
Run Code Online (Sandbox Code Playgroud)

在这个配置中,我告诉GemFire服务器启动一个"嵌入式"定位器("启动定位器")并连接到它("定位器"),作为集群中的GemFire管理器("jmx-manager")然后启动管理服务("jmx-manager-start"),最后启动"嵌入式"HTTP服务,用Jetty("http-service-port")实现,它将启动Pulse,管理REST API和as以及Developer REST API.

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

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

gfsh>connect --locator=localhost[11235]
Run Code Online (Sandbox Code Playgroud)

或者,如果您启动了管理服务,则可以使用...直接连接到Manager.

gfsh>connect --jmx-manager=localhost[1199]
Run Code Online (Sandbox Code Playgroud)

注意,从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]
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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

希望这可以帮助; 干杯!