You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2016/12/19 18:50:14 UTC

[1/2] camel git commit: CAMEL-10619: Add spring boot configuration for configuring shutdown options

Repository: camel
Updated Branches:
  refs/heads/camel-2.18.x 7b4b77a11 -> dcd6ab1bf
  refs/heads/master a93140cc9 -> 87b972ea5


CAMEL-10619: Add spring boot configuration for configuring shutdown options


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/87b972ea
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/87b972ea
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/87b972ea

Branch: refs/heads/master
Commit: 87b972ea564cda04699226ed94450822a8a7ddc4
Parents: a93140c
Author: Claus Ibsen <da...@apache.org>
Authored: Mon Dec 19 19:44:14 2016 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Mon Dec 19 19:49:38 2016 +0100

----------------------------------------------------------------------
 .../spring/boot/CamelAutoConfiguration.java     |  8 ++
 .../boot/CamelConfigurationProperties.java      | 78 ++++++++++++++++++++
 .../src/main/resources/application.yml          |  1 +
 3 files changed, 87 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/87b972ea/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelAutoConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelAutoConfiguration.java b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelAutoConfiguration.java
index d4335a4..579a384 100644
--- a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelAutoConfiguration.java
+++ b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelAutoConfiguration.java
@@ -102,6 +102,14 @@ public class CamelAutoConfiguration {
             ((SpringCamelContext) camelContext).setName(config.getName());
         }
 
+        if (config.getShutdownTimeout() > 0) {
+            camelContext.getShutdownStrategy().setTimeout(config.getShutdownTimeout());
+        }
+        camelContext.getShutdownStrategy().setSuppressLoggingOnTimeout(config.isShutdownSuppressLoggingOnTimeout());
+        camelContext.getShutdownStrategy().setShutdownNowOnTimeout(config.isShutdownNowOnTimeout());
+        camelContext.getShutdownStrategy().setShutdownRoutesInReverseOrder(config.isShutdownRoutesInReverseOrder());
+        camelContext.getShutdownStrategy().setLogInflightExchangesOnTimeout(config.isShutdownLogInflightExchangesOnTimeout());
+
         if (config.getLogDebugMaxChars() > 0) {
             camelContext.getProperties().put(Exchange.LOG_DEBUG_BODY_MAX_CHARS, "" + config.getLogDebugMaxChars());
         }

http://git-wip-us.apache.org/repos/asf/camel/blob/87b972ea/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelConfigurationProperties.java
----------------------------------------------------------------------
diff --git a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelConfigurationProperties.java b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelConfigurationProperties.java
index bded0e2..7ae05a4 100644
--- a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelConfigurationProperties.java
+++ b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelConfigurationProperties.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.spring.boot;
 
+import org.apache.camel.CamelContext;
 import org.apache.camel.ManagementStatisticsLevel;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 
@@ -30,6 +31,43 @@ public class CamelConfigurationProperties {
     private String name;
 
     /**
+     * Timeout in seconds to graceful shutdown Camel.
+     */
+    private int shutdownTimeout = 300;
+
+    /**
+     * Whether Camel should try to suppress logging during shutdown and timeout was triggered,
+     * meaning forced shutdown is happening. And during forced shutdown we want to avoid logging
+     * errors/warnings et all in the logs as a side-effect of the forced timeout.
+     * <p/>
+     * By default this is <tt>false</tt>
+     * <p/>
+     * Notice the suppress is a <i>best effort</i> as there may still be some logs coming
+     * from 3rd party libraries and whatnot, which Camel cannot control.
+     */
+    private boolean shutdownSuppressLoggingOnTimeout;
+
+    /**
+     * Sets whether to force shutdown of all consumers when a timeout occurred and thus
+     * not all consumers was shutdown within that period.
+     * <p/>
+     * You should have good reasons to set this option to <tt>false</tt> as it means that the routes
+     * keep running and is halted abruptly when CamelContext has been shutdown.
+     */
+    private boolean shutdownNowOnTimeout = true;
+
+    /**
+     * Sets whether routes should be shutdown in reverse or the same order as they where started.
+     */
+    private boolean shutdownRoutesInReverseOrder = true;
+
+    /**
+     * Sets whether to log information about the inflight Exchanges which are still running
+     * during a shutdown which didn't complete without the given timeout.
+     */
+    private boolean shutdownLogInflightExchangesOnTimeout = true;
+
+    /**
      * Enable JMX in your Camel application.
      */
     private boolean jmxEnabled = true;
@@ -331,6 +369,46 @@ public class CamelConfigurationProperties {
         this.name = name;
     }
 
+    public int getShutdownTimeout() {
+        return shutdownTimeout;
+    }
+
+    public void setShutdownTimeout(int shutdownTimeout) {
+        this.shutdownTimeout = shutdownTimeout;
+    }
+
+    public boolean isShutdownSuppressLoggingOnTimeout() {
+        return shutdownSuppressLoggingOnTimeout;
+    }
+
+    public void setShutdownSuppressLoggingOnTimeout(boolean shutdownSuppressLoggingOnTimeout) {
+        this.shutdownSuppressLoggingOnTimeout = shutdownSuppressLoggingOnTimeout;
+    }
+
+    public boolean isShutdownNowOnTimeout() {
+        return shutdownNowOnTimeout;
+    }
+
+    public void setShutdownNowOnTimeout(boolean shutdownNowOnTimeout) {
+        this.shutdownNowOnTimeout = shutdownNowOnTimeout;
+    }
+
+    public boolean isShutdownRoutesInReverseOrder() {
+        return shutdownRoutesInReverseOrder;
+    }
+
+    public void setShutdownRoutesInReverseOrder(boolean shutdownRoutesInReverseOrder) {
+        this.shutdownRoutesInReverseOrder = shutdownRoutesInReverseOrder;
+    }
+
+    public boolean isShutdownLogInflightExchangesOnTimeout() {
+        return shutdownLogInflightExchangesOnTimeout;
+    }
+
+    public void setShutdownLogInflightExchangesOnTimeout(boolean shutdownLogInflightExchangesOnTimeout) {
+        this.shutdownLogInflightExchangesOnTimeout = shutdownLogInflightExchangesOnTimeout;
+    }
+
     public boolean isJmxEnabled() {
         return jmxEnabled;
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/87b972ea/examples/camel-example-spring-boot/src/main/resources/application.yml
----------------------------------------------------------------------
diff --git a/examples/camel-example-spring-boot/src/main/resources/application.yml b/examples/camel-example-spring-boot/src/main/resources/application.yml
index dc362f5..6ee4f40 100644
--- a/examples/camel-example-spring-boot/src/main/resources/application.yml
+++ b/examples/camel-example-spring-boot/src/main/resources/application.yml
@@ -21,3 +21,4 @@ shell.auth.simple.user.password: password
 camel:
   springboot:
     allow-use-original-message: false
+    shutdown-timeout: 15


[2/2] camel git commit: CAMEL-10619: Add spring boot configuration for configuring shutdown options

Posted by da...@apache.org.
CAMEL-10619: Add spring boot configuration for configuring shutdown options


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/dcd6ab1b
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/dcd6ab1b
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/dcd6ab1b

Branch: refs/heads/camel-2.18.x
Commit: dcd6ab1bf4140cabde687250c78beb7251ec9b65
Parents: 7b4b77a
Author: Claus Ibsen <da...@apache.org>
Authored: Mon Dec 19 19:44:14 2016 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Mon Dec 19 19:50:06 2016 +0100

----------------------------------------------------------------------
 .../spring/boot/CamelAutoConfiguration.java     |  8 ++
 .../boot/CamelConfigurationProperties.java      | 78 ++++++++++++++++++++
 .../src/main/resources/application.yml          |  1 +
 3 files changed, 87 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/dcd6ab1b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelAutoConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelAutoConfiguration.java b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelAutoConfiguration.java
index d4335a4..579a384 100644
--- a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelAutoConfiguration.java
+++ b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelAutoConfiguration.java
@@ -102,6 +102,14 @@ public class CamelAutoConfiguration {
             ((SpringCamelContext) camelContext).setName(config.getName());
         }
 
+        if (config.getShutdownTimeout() > 0) {
+            camelContext.getShutdownStrategy().setTimeout(config.getShutdownTimeout());
+        }
+        camelContext.getShutdownStrategy().setSuppressLoggingOnTimeout(config.isShutdownSuppressLoggingOnTimeout());
+        camelContext.getShutdownStrategy().setShutdownNowOnTimeout(config.isShutdownNowOnTimeout());
+        camelContext.getShutdownStrategy().setShutdownRoutesInReverseOrder(config.isShutdownRoutesInReverseOrder());
+        camelContext.getShutdownStrategy().setLogInflightExchangesOnTimeout(config.isShutdownLogInflightExchangesOnTimeout());
+
         if (config.getLogDebugMaxChars() > 0) {
             camelContext.getProperties().put(Exchange.LOG_DEBUG_BODY_MAX_CHARS, "" + config.getLogDebugMaxChars());
         }

http://git-wip-us.apache.org/repos/asf/camel/blob/dcd6ab1b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelConfigurationProperties.java
----------------------------------------------------------------------
diff --git a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelConfigurationProperties.java b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelConfigurationProperties.java
index 100aa18..146aefc 100644
--- a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelConfigurationProperties.java
+++ b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelConfigurationProperties.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.spring.boot;
 
+import org.apache.camel.CamelContext;
 import org.apache.camel.ManagementStatisticsLevel;
 import org.apache.camel.api.management.ManagedAttribute;
 import org.springframework.boot.context.properties.ConfigurationProperties;
@@ -31,6 +32,43 @@ public class CamelConfigurationProperties {
     private String name;
 
     /**
+     * Timeout in seconds to graceful shutdown Camel.
+     */
+    private int shutdownTimeout = 300;
+
+    /**
+     * Whether Camel should try to suppress logging during shutdown and timeout was triggered,
+     * meaning forced shutdown is happening. And during forced shutdown we want to avoid logging
+     * errors/warnings et all in the logs as a side-effect of the forced timeout.
+     * <p/>
+     * By default this is <tt>false</tt>
+     * <p/>
+     * Notice the suppress is a <i>best effort</i> as there may still be some logs coming
+     * from 3rd party libraries and whatnot, which Camel cannot control.
+     */
+    private boolean shutdownSuppressLoggingOnTimeout;
+
+    /**
+     * Sets whether to force shutdown of all consumers when a timeout occurred and thus
+     * not all consumers was shutdown within that period.
+     * <p/>
+     * You should have good reasons to set this option to <tt>false</tt> as it means that the routes
+     * keep running and is halted abruptly when CamelContext has been shutdown.
+     */
+    private boolean shutdownNowOnTimeout = true;
+
+    /**
+     * Sets whether routes should be shutdown in reverse or the same order as they where started.
+     */
+    private boolean shutdownRoutesInReverseOrder = true;
+
+    /**
+     * Sets whether to log information about the inflight Exchanges which are still running
+     * during a shutdown which didn't complete without the given timeout.
+     */
+    private boolean shutdownLogInflightExchangesOnTimeout = true;
+
+    /**
      * Enable JMX in your Camel application.
      */
     private boolean jmxEnabled = true;
@@ -326,6 +364,46 @@ public class CamelConfigurationProperties {
         this.name = name;
     }
 
+    public int getShutdownTimeout() {
+        return shutdownTimeout;
+    }
+
+    public void setShutdownTimeout(int shutdownTimeout) {
+        this.shutdownTimeout = shutdownTimeout;
+    }
+
+    public boolean isShutdownSuppressLoggingOnTimeout() {
+        return shutdownSuppressLoggingOnTimeout;
+    }
+
+    public void setShutdownSuppressLoggingOnTimeout(boolean shutdownSuppressLoggingOnTimeout) {
+        this.shutdownSuppressLoggingOnTimeout = shutdownSuppressLoggingOnTimeout;
+    }
+
+    public boolean isShutdownNowOnTimeout() {
+        return shutdownNowOnTimeout;
+    }
+
+    public void setShutdownNowOnTimeout(boolean shutdownNowOnTimeout) {
+        this.shutdownNowOnTimeout = shutdownNowOnTimeout;
+    }
+
+    public boolean isShutdownRoutesInReverseOrder() {
+        return shutdownRoutesInReverseOrder;
+    }
+
+    public void setShutdownRoutesInReverseOrder(boolean shutdownRoutesInReverseOrder) {
+        this.shutdownRoutesInReverseOrder = shutdownRoutesInReverseOrder;
+    }
+
+    public boolean isShutdownLogInflightExchangesOnTimeout() {
+        return shutdownLogInflightExchangesOnTimeout;
+    }
+
+    public void setShutdownLogInflightExchangesOnTimeout(boolean shutdownLogInflightExchangesOnTimeout) {
+        this.shutdownLogInflightExchangesOnTimeout = shutdownLogInflightExchangesOnTimeout;
+    }
+
     public boolean isJmxEnabled() {
         return jmxEnabled;
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/dcd6ab1b/examples/camel-example-spring-boot/src/main/resources/application.yml
----------------------------------------------------------------------
diff --git a/examples/camel-example-spring-boot/src/main/resources/application.yml b/examples/camel-example-spring-boot/src/main/resources/application.yml
index dc362f5..6ee4f40 100644
--- a/examples/camel-example-spring-boot/src/main/resources/application.yml
+++ b/examples/camel-example-spring-boot/src/main/resources/application.yml
@@ -21,3 +21,4 @@ shell.auth.simple.user.password: password
 camel:
   springboot:
     allow-use-original-message: false
+    shutdown-timeout: 15