Implemented connection to random server.

This commit is contained in:
didfet
2015-03-19 14:33:31 +01:00
parent 20366c982e
commit 850a92cfe1
2 changed files with 21 additions and 13 deletions

View File

@@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>logstash-forwarder-java</groupId> <groupId>logstash-forwarder-java</groupId>
<artifactId>logstash-forwarder-java</artifactId> <artifactId>logstash-forwarder-java</artifactId>
<version>0.1.1-SNAPSHOT</version> <version>0.1.1</version>
<name>logstash-forwarder-java</name> <name>logstash-forwarder-java</name>
<description>Java version of logstash forwarder</description> <description>Java version of logstash forwarder</description>
<url>https://github.com/didfet/logstash-forwarder-java</url> <url>https://github.com/didfet/logstash-forwarder-java</url>

View File

@@ -3,6 +3,8 @@ package info.fetter.logstashforwarder;
import static org.apache.log4j.Level.*; import static org.apache.log4j.Level.*;
import java.io.IOException; import java.io.IOException;
import java.util.List;
import java.util.Random;
import info.fetter.logstashforwarder.config.ConfigurationManager; import info.fetter.logstashforwarder.config.ConfigurationManager;
import info.fetter.logstashforwarder.config.FilesSection; import info.fetter.logstashforwarder.config.FilesSection;
@@ -49,6 +51,7 @@ public class Forwarder {
private static FileReader reader; private static FileReader reader;
private static Level logLevel = INFO; private static Level logLevel = INFO;
private static ProtocolAdapter adapter; private static ProtocolAdapter adapter;
private static Random random = new Random();
public static void main(String[] args) { public static void main(String[] args) {
try { try {
@@ -82,21 +85,26 @@ public class Forwarder {
while(watcher.readFiles(reader) == spoolSize); while(watcher.readFiles(reader) == spoolSize);
Thread.sleep(idleTimeout); Thread.sleep(idleTimeout);
} catch(AdapterException e) { } catch(AdapterException e) {
try { logger.error("Lost server connection");
logger.error("Lost server connection"); Thread.sleep(configManager.getConfig().getNetwork().getTimeout() * 1000);
Thread.sleep(configManager.getConfig().getNetwork().getTimeout() * 1000); connectToServer();
connectToServer();
} catch(Exception ex) {
logger.error("Failed to reconnect to server : " + ex.getMessage());
}
} }
} }
} }
private static void connectToServer() throws NumberFormatException, IOException { private static void connectToServer() {
String[] serverAndPort = configManager.getConfig().getNetwork().getServers().get(0).split(":"); int randomServerIndex = 0;
adapter = new LumberjackClient(configManager.getConfig().getNetwork().getSslCA(),serverAndPort[0],Integer.parseInt(serverAndPort[1])); List<String> serverList = configManager.getConfig().getNetwork().getServers();
reader.setAdapter(adapter); while(adapter == null) {
try {
randomServerIndex = random.nextInt(serverList.size());
String[] serverAndPort = serverList.get(randomServerIndex).split(":");
adapter = new LumberjackClient(configManager.getConfig().getNetwork().getSslCA(),serverAndPort[0],Integer.parseInt(serverAndPort[1]));
reader.setAdapter(adapter);
} catch(Exception ex) {
logger.error("Failed to connect to server " + serverList.get(randomServerIndex) + " : " + ex.getMessage());
}
}
} }
@SuppressWarnings("static-access") @SuppressWarnings("static-access")