DATAES-22 : Add support for TransportClient additional parameters such as client.transport.ignore_cluster_name, client.transport.ping_timeout, client.transport.nodes_sampler_interval

This commit is contained in:
Mohsin Husen 2013-09-18 10:50:40 +01:00
parent 36e2095286
commit 5a34a90586
3 changed files with 50 additions and 2 deletions

View File

@ -43,6 +43,9 @@ public class TransportClientFactoryBean implements FactoryBean<TransportClient>,
private String clusterNodes; private String clusterNodes;
private String clusterName; private String clusterName;
private Boolean clientTransportSniff; private Boolean clientTransportSniff;
private Boolean clientIgnoreClusterName;
private String clientPingTimeout;
private String clientNodesSamplerInterval;
private TransportClient client; private TransportClient client;
private Properties properties; private Properties properties;
static final String COLON = ":"; static final String COLON = ":";
@ -101,6 +104,9 @@ public class TransportClientFactoryBean implements FactoryBean<TransportClient>,
return settingsBuilder() return settingsBuilder()
.put("cluster.name", clusterName) .put("cluster.name", clusterName)
.put("client.transport.sniff", clientTransportSniff) .put("client.transport.sniff", clientTransportSniff)
.put("client.transport.ignore_cluster_name", clientIgnoreClusterName)
.put("client.transport.ping_timeout", clientPingTimeout)
.put("client.transport.nodes_sampler_interval", clientNodesSamplerInterval)
.build(); .build();
} }
@ -116,6 +122,30 @@ public class TransportClientFactoryBean implements FactoryBean<TransportClient>,
this.clientTransportSniff = clientTransportSniff; this.clientTransportSniff = clientTransportSniff;
} }
public String getClientNodesSamplerInterval() {
return clientNodesSamplerInterval;
}
public void setClientNodesSamplerInterval(String clientNodesSamplerInterval) {
this.clientNodesSamplerInterval = clientNodesSamplerInterval;
}
public String getClientPingTimeout() {
return clientPingTimeout;
}
public void setClientPingTimeout(String clientPingTimeout) {
this.clientPingTimeout = clientPingTimeout;
}
public Boolean getClientIgnoreClusterName() {
return clientIgnoreClusterName;
}
public void setClientIgnoreClusterName(Boolean clientIgnoreClusterName) {
this.clientIgnoreClusterName = clientIgnoreClusterName;
}
public void setProperties(Properties properties) { public void setProperties(Properties properties) {
this.properties = properties; this.properties = properties;
} }

View File

@ -36,14 +36,17 @@ public class TransportClientBeanDefinitionParser extends AbstractBeanDefinitionP
@Override @Override
protected AbstractBeanDefinition parseInternal(Element element, ParserContext parserContext) { protected AbstractBeanDefinition parseInternal(Element element, ParserContext parserContext) {
BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition(TransportClientFactoryBean.class); BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition(TransportClientFactoryBean.class);
setClusterNodes(element, builder); setConfigurations(element, builder);
return getSourcedBeanDefinition(builder, element, parserContext); return getSourcedBeanDefinition(builder, element, parserContext);
} }
private void setClusterNodes(Element element, BeanDefinitionBuilder builder) { private void setConfigurations(Element element, BeanDefinitionBuilder builder) {
builder.addPropertyValue("clusterNodes", element.getAttribute("cluster-nodes")); builder.addPropertyValue("clusterNodes", element.getAttribute("cluster-nodes"));
builder.addPropertyValue("clusterName", element.getAttribute("cluster-name")); builder.addPropertyValue("clusterName", element.getAttribute("cluster-name"));
builder.addPropertyValue("clientTransportSniff", Boolean.valueOf(element.getAttribute("client-transport-sniff"))); builder.addPropertyValue("clientTransportSniff", Boolean.valueOf(element.getAttribute("client-transport-sniff")));
builder.addPropertyValue("clientIgnoreClusterName", Boolean.valueOf(element.getAttribute("client-transport-ignore-cluster-name")));
builder.addPropertyValue("clientPingTimeout", element.getAttribute("client-transport-ping-timeout"));
builder.addPropertyValue("clientNodesSamplerInterval", element.getAttribute("client-transport-nodes-sampler-interval"));
} }
private AbstractBeanDefinition getSourcedBeanDefinition(BeanDefinitionBuilder builder, Element source, private AbstractBeanDefinition getSourcedBeanDefinition(BeanDefinitionBuilder builder, Element source,

View File

@ -89,6 +89,21 @@
<xsd:documentation><![CDATA[The client allows to sniff the rest of the cluster, and add those into its list of machines to use.]]> </xsd:documentation> <xsd:documentation><![CDATA[The client allows to sniff the rest of the cluster, and add those into its list of machines to use.]]> </xsd:documentation>
</xsd:annotation> </xsd:annotation>
</xsd:attribute> </xsd:attribute>
<xsd:attribute name="client-transport-ignore-cluster-name" type="xsd:boolean" default="false">
<xsd:annotation>
<xsd:documentation><![CDATA[Set to true to ignore cluster name validation of connected nodes. (since 0.19.4)]]> </xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="client-transport-ping-timeout" type="xsd:string" default="5s">
<xsd:annotation>
<xsd:documentation><![CDATA[The time to wait for a ping response from a node. Defaults to 5s.]]> </xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="client-transport-nodes-sampler-interval" type="xsd:string" default="5s">
<xsd:annotation>
<xsd:documentation><![CDATA[How often to sample / ping the nodes listed and connected. Defaults to 5s.]]> </xsd:documentation>
</xsd:annotation>
</xsd:attribute>
</xsd:extension> </xsd:extension>
</xsd:complexContent> </xsd:complexContent>
</xsd:complexType> </xsd:complexType>