Jelajahi Sumber

Implemented connection to random server.

didfet 10 tahun lalu
induk
melakukan
850a92cfe1
2 mengubah file dengan 21 tambahan dan 13 penghapusan
  1. 1 1
      pom.xml
  2. 20 12
      src/main/java/info/fetter/logstashforwarder/Forwarder.java

+ 1 - 1
pom.xml

@@ -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>

+ 20 - 12
src/main/java/info/fetter/logstashforwarder/Forwarder.java

@@ -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");
-					Thread.sleep(configManager.getConfig().getNetwork().getTimeout() * 1000);
-					connectToServer();
-				} catch(Exception ex) {
-					logger.error("Failed to reconnect to server : " + ex.getMessage());
-				}
+				logger.error("Lost server connection");
+				Thread.sleep(configManager.getConfig().getNetwork().getTimeout() * 1000);
+				connectToServer();
 			}
 			}
 		}
 		}
 	}
 	}
-	
-	private static void connectToServer() throws NumberFormatException, IOException {
-		String[] serverAndPort = configManager.getConfig().getNetwork().getServers().get(0).split(":");
-		adapter = new LumberjackClient(configManager.getConfig().getNetwork().getSslCA(),serverAndPort[0],Integer.parseInt(serverAndPort[1]));
-		reader.setAdapter(adapter);
+
+	private static void connectToServer() {
+		int randomServerIndex = 0;
+		List<String> serverList = configManager.getConfig().getNetwork().getServers();
+		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")