
io.latent.storm.rabbitmq.config.ConnectionConfig Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of storm-rabbitmq Show documentation
Show all versions of storm-rabbitmq Show documentation
A library of tools for interacting with RabbitMQ from Storm.
package io.latent.storm.rabbitmq.config;
import static io.latent.storm.rabbitmq.config.ConfigUtils.addToMap;
import static io.latent.storm.rabbitmq.config.ConfigUtils.getFromMap;
import static io.latent.storm.rabbitmq.config.ConfigUtils.getFromMapAsBoolean;
import static io.latent.storm.rabbitmq.config.ConfigUtils.getFromMapAsInt;
import java.io.Serializable;
import java.net.URISyntaxException;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.util.HashMap;
import java.util.Map;
import com.rabbitmq.client.ConnectionFactory;
public class ConnectionConfig implements Serializable {
/**
* Serial version UID.
*/
private static final long serialVersionUID = 1L;
// Use named parameters
private String host;
private int port;
private String username;
private String password;
private String virtualHost;
private int heartBeat;
private boolean ssl;
// Backup hosts to try and connect to.
private ConfigAvailableHosts highAvailabilityHosts = new ConfigAvailableHosts();
// Use AMQP URI http://www.rabbitmq.com/uri-spec.html
private String uri;
public static ConnectionConfig forTest() {
return new ConnectionConfig(ConnectionFactory.DEFAULT_HOST, ConnectionFactory.DEFAULT_USER, ConnectionFactory.DEFAULT_PASS);
}
public ConnectionConfig(String uri) {
this.uri = uri;
}
public ConnectionConfig(String host,
String username,
String password) {
this(host, ConnectionFactory.DEFAULT_AMQP_PORT, username, password, ConnectionFactory.DEFAULT_VHOST, 10, false);
}
public ConnectionConfig(String host,
String username,
String password, boolean ssl) {
this(host, ConnectionFactory.DEFAULT_AMQP_PORT, username, password, ConnectionFactory.DEFAULT_VHOST, 10, ssl);
}
public ConnectionConfig(String host,
int port,
String username,
String password,
String virtualHost,
int heartBeat) {
this(host,port,username,password,virtualHost,heartBeat,false);
}
public ConnectionConfig(String host, int port, String username, String password, String virtualHost, int heartBeat, boolean ssl) {
this(new ConfigAvailableHosts(), host, port, username, password, virtualHost, heartBeat, ssl);
}
/**
* Use this constructor if you wish to specify a set of
* hosts to connect to in the event that you need a high
* availability RabbitMQ connection.
*
* @param hosts The {@link ConfigAvailableHosts} that will give you the ability to specify a set of hosts
* @param username
* @param password
* @param virtualHost
* @param heartbeat
*/
public ConnectionConfig(final ConfigAvailableHosts hosts, String host, int port, String username, String password, String virtualHost, int heartBeat, final boolean ssl) {
this.host = host;
this.port = port;
this.username = username;
this.password = password;
this.virtualHost = virtualHost;
this.heartBeat = heartBeat;
this.ssl = ssl;
this.highAvailabilityHosts = hosts;
}
public ConfigAvailableHosts getHighAvailabilityHosts() {
return highAvailabilityHosts;
}
/**
* Set this value if you want to use a set of high availability hosts
* in addition to the specified primary host you want to connect to,
* and didn't use the full constructor.
*
* @param highAvailabilityHosts The host configuration for using backup hosts
*/
public void setHighAvailabilityHosts(ConfigAvailableHosts highAvailabilityHosts) {
this.highAvailabilityHosts = highAvailabilityHosts;
}
public String getHost() {
return host;
}
public int getPort() {
return port;
}
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
public String getVirtualHost() {
return virtualHost;
}
public int getHeartBeat() {
return heartBeat;
}
public String getUri() {
return uri;
}
boolean isSsl(){
return this.ssl;
}
public ConnectionFactory asConnectionFactory() {
ConnectionFactory factory = new ConnectionFactory();
if (uri != null) {
try {
factory.setUri(uri);
} catch (URISyntaxException e) {
throw new RuntimeException(e);
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e);
} catch (KeyManagementException e) {
throw new RuntimeException(e);
}
} else {
factory.setHost(host);
factory.setPort(port);
factory.setUsername(username);
factory.setPassword(password);
factory.setVirtualHost(virtualHost);
factory.setRequestedHeartbeat(heartBeat);
if(ssl){
try {
factory.useSslProtocol();
} catch (KeyManagementException e) {
throw new RuntimeException(e);
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e);
}
}
}
return factory;
}
public static ConnectionConfig getFromStormConfig(Map stormConfig) {
if (stormConfig.containsKey("rabbitmq.uri")) {
return new ConnectionConfig(getFromMap("rabbitmq.uri", stormConfig));
} else {
String highAvailabilityHostsString = getFromMap("rabbitmq.ha.hosts", stormConfig);
if(highAvailabilityHostsString != null){
final ConfigAvailableHosts haHosts = ConfigAvailableHosts.fromString(highAvailabilityHostsString);
return new ConnectionConfig(haHosts,
getFromMap("rabbitmq.host", stormConfig, ConnectionFactory.DEFAULT_HOST),
getFromMapAsInt("rabbitmq.port", stormConfig, ConnectionFactory.DEFAULT_AMQP_PORT),
getFromMap("rabbitmq.username", stormConfig, ConnectionFactory.DEFAULT_USER),
getFromMap("rabbitmq.password", stormConfig, ConnectionFactory.DEFAULT_PASS),
getFromMap("rabbitmq.virtualhost", stormConfig, ConnectionFactory.DEFAULT_VHOST),
getFromMapAsInt("rabbitmq.heartbeat", stormConfig, ConnectionFactory.DEFAULT_HEARTBEAT),
getFromMapAsBoolean("rabbitmq.ssl", stormConfig, false));
}else{
return new ConnectionConfig(getFromMap("rabbitmq.host", stormConfig, ConnectionFactory.DEFAULT_HOST),
getFromMapAsInt("rabbitmq.port", stormConfig, ConnectionFactory.DEFAULT_AMQP_PORT),
getFromMap("rabbitmq.username", stormConfig, ConnectionFactory.DEFAULT_USER),
getFromMap("rabbitmq.password", stormConfig, ConnectionFactory.DEFAULT_PASS),
getFromMap("rabbitmq.virtualhost", stormConfig, ConnectionFactory.DEFAULT_VHOST),
getFromMapAsInt("rabbitmq.heartbeat", stormConfig, ConnectionFactory.DEFAULT_HEARTBEAT),
getFromMapAsBoolean("rabbitmq.ssl", stormConfig, false));
}
}
}
public Map asMap() {
Map map = new HashMap();
if (uri != null) {
addToMap("rabbitmq.uri", map, uri);
} else {
addToMap("rabbitmq.host", map, host);
addToMap("rabbitmq.port", map, port);
addToMap("rabbitmq.username", map, username);
addToMap("rabbitmq.password", map, password);
addToMap("rabbitmq.virtualhost", map, virtualHost);
addToMap("rabbitmq.heartbeat", map, heartBeat);
addToMap("rabbitmq.ssl", map, ssl);
addToMap("rabbitmq.ha.hosts", map, highAvailabilityHosts.toString());
}
return map;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy