diff --git a/README.md b/README.md index cae24f9..4b5d448 100644 --- a/README.md +++ b/README.md @@ -24,11 +24,12 @@ Getting Started Quick start: 1. Download the [latest pre-built SNAPSHOT release](https://oss.sonatype.org/content/repositories/snapshots/net/johnewart/gearman/gearman-server/) from the Sonatype snapshots repository -2. Run java -jar gearman-server-VERSION.jar +2. Run `java -jar gearman-server-VERSION.jar` 3. This will default to port 4730 and memory-only persistence, with snapshotting and the web interface listening on port 8080 +4. To list avaliable options run `java -jar gearman-server-VERSION.jar --help` -If you want to use more advanced features, see the example config.yml -files in [the gearman-server sub-project](https://github.com/johnewart/gearman-java/tree/master/gearman-server) +If you want to use more advanced features, run server with config file `java -jar gearman-server-VERSION.jar -c path_to_config_file`. +For details check example configuration files in [the gearman-server sub-project](https://github.com/johnewart/gearman-java/tree/master/gearman-server) Web Interface diff --git a/cfg.yml b/cfg.yml new file mode 100644 index 0000000..59c0af6 --- /dev/null +++ b/cfg.yml @@ -0,0 +1,10 @@ +port: 4730 +httpPort: 8888 +enableSSL: false +debugging: false +hostName: gearman +persistenceEngine: + engine: memory +exceptionStore: + engine: memory +logLevel: WARN \ No newline at end of file diff --git a/gearman-client/pom.xml b/gearman-client/pom.xml index e6e8fdc..451a402 100644 --- a/gearman-client/pom.xml +++ b/gearman-client/pom.xml @@ -5,7 +5,7 @@ gearman-java net.johnewart.gearman - 0.8.11-SNAPSHOT + 0.8.12-SNAPSHOT 4.0.0 jar diff --git a/gearman-common/pom.xml b/gearman-common/pom.xml index 2930648..0297d3a 100644 --- a/gearman-common/pom.xml +++ b/gearman-common/pom.xml @@ -5,7 +5,7 @@ gearman-java net.johnewart.gearman - 0.8.11-SNAPSHOT + 0.8.12-SNAPSHOT 4.0.0 diff --git a/gearman-embedded-server/pom.xml b/gearman-embedded-server/pom.xml index 7758079..deda623 100644 --- a/gearman-embedded-server/pom.xml +++ b/gearman-embedded-server/pom.xml @@ -5,7 +5,7 @@ gearman-java net.johnewart.gearman - 0.8.11-SNAPSHOT + 0.8.12-SNAPSHOT 4.0.0 diff --git a/gearman-engine/pom.xml b/gearman-engine/pom.xml index d61bab2..4c22743 100644 --- a/gearman-engine/pom.xml +++ b/gearman-engine/pom.xml @@ -5,7 +5,7 @@ gearman-java net.johnewart.gearman - 0.8.11-SNAPSHOT + 0.8.12-SNAPSHOT 4.0.0 diff --git a/gearman-example/pom.xml b/gearman-example/pom.xml index 9323f4b..363c47e 100644 --- a/gearman-example/pom.xml +++ b/gearman-example/pom.xml @@ -5,7 +5,7 @@ gearman-java net.johnewart.gearman - 0.8.11-SNAPSHOT + 0.8.12-SNAPSHOT 4.0.0 diff --git a/gearman-integration/pom.xml b/gearman-integration/pom.xml index b2a1a60..46fe09e 100644 --- a/gearman-integration/pom.xml +++ b/gearman-integration/pom.xml @@ -5,7 +5,7 @@ gearman-java net.johnewart.gearman - 0.8.11-SNAPSHOT + 0.8.12-SNAPSHOT 4.0.0 diff --git a/gearman-server/pom.xml b/gearman-server/pom.xml index 786e30b..2dab099 100644 --- a/gearman-server/pom.xml +++ b/gearman-server/pom.xml @@ -5,7 +5,7 @@ gearman-java net.johnewart.gearman - 0.8.11-SNAPSHOT + 0.8.12-SNAPSHOT 4.0.0 gearman-server @@ -27,6 +27,11 @@ snakeyaml 1.12 + + com.beust + jcommander + 1.72 + joda-time joda-time diff --git a/gearman-server/src/main/java/net/johnewart/gearman/server/GearmanDaemon.java b/gearman-server/src/main/java/net/johnewart/gearman/server/GearmanDaemon.java index 032b75e..81df8a6 100644 --- a/gearman-server/src/main/java/net/johnewart/gearman/server/GearmanDaemon.java +++ b/gearman-server/src/main/java/net/johnewart/gearman/server/GearmanDaemon.java @@ -1,11 +1,14 @@ package net.johnewart.gearman.server; +import com.beust.jcommander.JCommander; +import com.beust.jcommander.ParameterException; import net.johnewart.gearman.server.config.DefaultServerConfiguration; import net.johnewart.gearman.server.config.GearmanServerConfiguration; import net.johnewart.gearman.server.net.ServerListener; import net.johnewart.gearman.server.web.WebListener; import org.slf4j.LoggerFactory; import org.yaml.snakeyaml.Yaml; +import com.beust.jcommander.Parameter; import java.io.InputStream; import java.nio.file.Files; @@ -14,18 +17,37 @@ public class GearmanDaemon { private static final org.slf4j.Logger LOG = LoggerFactory.getLogger(GearmanDaemon.class); + private static class CommandLineOptions { + @Parameter(names = {"--debug", "-d"}, description = "Turn on debug mode, resulting in a more verbose log output") + boolean debug = false; + + @Parameter(names = {"--config", "-c"}, description = "Specify file to load configuration") + String configFile; + + @Parameter(names = {"--help", "-h"}, description = "Prints usage", help = true) + boolean help; + } + public static void main(String... args) { - final String configFile; + CommandLineOptions options = new CommandLineOptions(); + JCommander cmd = new JCommander(options); + cmd.setProgramName("Gearman Server"); - if (args.length != 1) { - configFile = "config.yml"; - } else { - configFile = args[0]; + try { + cmd.parse(args); + if(options.help) { + cmd.usage(); + System.exit(0); + } + + } catch (ParameterException e) { + cmd.usage(); + System.exit(0); } - - final GearmanServerConfiguration serverConfiguration = loadFromConfigOrGenerateDefaultConfig(configFile); + final GearmanServerConfiguration serverConfiguration = loadFromConfigOrGenerateDefaultConfig(options.configFile); + serverConfiguration.setDebugging(options.debug); final ServerListener serverListener = new ServerListener(serverConfiguration); final WebListener webListener = new WebListener(serverConfiguration); @@ -44,10 +66,8 @@ private static GearmanServerConfiguration loadFromConfigOrGenerateDefaultConfig( serverConfiguration = yaml.loadAs(in, GearmanServerConfiguration.class); - - System.out.println(serverConfiguration.toString()); - LOG.info("Starting Gearman Server with settings from " + configFile + "..."); + LOG.info("Serveer settings: " + serverConfiguration.toString()); } catch (Exception e) { LOG.error("Can't load " + configFile + ": ", e); diff --git a/gearman-server/src/main/java/net/johnewart/gearman/server/config/GearmanServerConfiguration.java b/gearman-server/src/main/java/net/johnewart/gearman/server/config/GearmanServerConfiguration.java index dc18cee..9cf6d80 100644 --- a/gearman-server/src/main/java/net/johnewart/gearman/server/config/GearmanServerConfiguration.java +++ b/gearman-server/src/main/java/net/johnewart/gearman/server/config/GearmanServerConfiguration.java @@ -43,7 +43,8 @@ public class GearmanServerConfiguration implements ServerConfiguration { private MetricRegistry metricRegistry; private QueueMetrics queueMetrics; private HealthCheckRegistry healthCheckRegistry; - private Object configLock = new Object(); + private final Object configLock = new Object(); + private String logLevel = "ERROR"; public void setPort(int port) { this.port = port; @@ -61,15 +62,20 @@ public void setEnableSSL(boolean enableSSL) { this.enableSSL = enableSSL; } + public void setLogLevel(String logLevel){ + this.logLevel = logLevel; + if(!debugging) { + Logger root = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME); + root.setLevel(Level.toLevel(this.logLevel)); + } + } + public void setDebugging(boolean debugging) { this.debugging = debugging; Logger root = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME); - if(debugging) - { + if(debugging) { root.setLevel(Level.DEBUG); - } else { - root.setLevel(Level.ERROR); } } @@ -147,10 +153,10 @@ public JobQueueFactory getJobQueueFactory() { public JobManager getJobManager() { if(jobManager == null) { jobManager = new JobManager(getJobQueueFactory(), - getJobHandleFactory(), - getUniqueIdFactory(), - getExceptionStorageEngine(), - getQueueMetrics()); + getJobHandleFactory(), + getUniqueIdFactory(), + getExceptionStorageEngine(), + getQueueMetrics()); } return jobManager; diff --git a/pom.xml b/pom.xml index 47fe760..1e3f668 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ net.johnewart.gearman gearman-java pom - 0.8.11-SNAPSHOT + 0.8.12-SNAPSHOT gearman-client gearman-server