[ 
https://issues.apache.org/jira/browse/CAMEL-12988?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16714391#comment-16714391
 ] 

ASF GitHub Bot commented on CAMEL-12988:
----------------------------------------

oscerd closed pull request #2662: CAMEL-12988: Update doc to clarify how to 
specify routes to start up last
URL: https://github.com/apache/camel/pull/2662
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git 
a/camel-core/src/test/java/org/apache/camel/processor/RouteStartupOrderLastTest.java
 
b/camel-core/src/test/java/org/apache/camel/processor/RouteStartupOrderLastTest.java
index 106745c8415..a1b32b52a0c 100644
--- 
a/camel-core/src/test/java/org/apache/camel/processor/RouteStartupOrderLastTest.java
+++ 
b/camel-core/src/test/java/org/apache/camel/processor/RouteStartupOrderLastTest.java
@@ -61,7 +61,7 @@ public void configure() throws Exception {
                 // should start first
                 from("seda:foo").startupOrder(1).to("mock:result");
 
-                // should start last after the default routes route
+                // should start last after the default routes
                 from("direct:bar").startupOrder(12345).to("seda:bar");
 
                 // use auto assigned startup ordering
@@ -69,4 +69,4 @@ public void configure() throws Exception {
             }
         };
     }
-}
\ No newline at end of file
+}
diff --git 
a/docs/user-manual/en/configuring-route-startup-ordering-and-autostartup.adoc 
b/docs/user-manual/en/configuring-route-startup-ordering-and-autostartup.adoc
new file mode 100644
index 00000000000..b993e386552
--- /dev/null
+++ 
b/docs/user-manual/en/configuring-route-startup-ordering-and-autostartup.adoc
@@ -0,0 +1,271 @@
+[[Configuringroutestartuporderingandautostartup-Configuringroutesstartuporderingandautostartup]]
+=== Configuring routes startup ordering and autostartup
+
+*Available as of Camel 2.1*
+
+Camel now supports configuring two aspects:
+
+* auto startup
+* order of starting routes
+
+[[Configuringroutestartuporderingandautostartup-ConfiguringwhetherCamelshouldbeautostartedornotinXMLDSL]]
+==== Configuring whether Camel should be auto started or not in XML DSL
+
+The old option `shouldStartContext` have been removed and replaced with
+this new `autoStartup` option instead. What it allows is to configure
+Camel to *not* auto start when Spring starts.
+
+For example the route below we have configured `autoStartup=false` to
+prevent Camel starting when Spring starts.
+
+[source,xml]
+----
+    <camelContext id="myCamel" xmlns="http://camel.apache.org/schema/spring"; 
autoStartup="false">
+        <route>
+            <from uri="direct:start"/>
+            <to uri="mock:result"/>
+        </route>
+    </camelContext>
+----
+
+So how do you start Camel then?
+
+The `autoStartup` option on the `<camelContext>` is only used once, so you
+can manually start Camel later by invoking its `start` method as shown
+below:
+
+[source,java]
+----
+    ApplicationContext ac = ...
+    SpringCamelContext camel = (SpringCamelContext) ac.getBean("myCamel");
+
+    // now start Camel manually
+    camel.start();
+----
+
+[[Configuringroutestartuporderingandautostartup-ConfiguringwhetherarouteshouldbestartedornotinXMLDSL]]
+==== Configuring whether a route should be started or not in XML DSL
+
+You can use the `autoStartup` option to configure if a given route
+should be started when Camel starts. By default a route is auto started.
+
+You can disable or enable it as follows.
+
+In XML DSL you define it as follows:
+
+[source,xml]
+----
+<route autoStartup="false">
+   <from uri="activemq:queue:special"/>
+   <to uri="file://backup"/>
+</route>
+----
+
+And to explicit state it should be started:
+
+[source,xml]
+----
+<route autoStartup="true">
+   <from uri="activemq:queue:special"/>
+   <to uri="file://backup"/>
+</route>
+----
+
+[[Configuringroutestartuporderingandautostartup-ConfiguringwhetherarouteshouldbestartedornotinJavaDSL]]
+==== Configuring whether a route should be started or not in Java DSL
+
+You can use the `autoStartup` option to configure if a given route
+should be started when Camel starts. By default a route is auto started.
+
+You can disable or enable it as follows:
+
+[source,java]
+----
+from("activemq:queue:special").noAutoStartup().to("file://backup");
+----
+
+[[Configuringroutestartuporderingandautostartup-ConfiguringwhetherarouteshouldbestartedornotusingabooleanorStringinJavaDSL]]
+==== Configuring whether a route should be started or not, using a boolean or 
String, in Java DSL
+
+*Available as of Camel 2.9*
+
+To startup based on a boolean, String or
+<<properties-component,Property>>, do one of the following:
+
+[source,java]
+----
+boolean startupRoute = true;
+from("activemq:queue:special").autoStartup(startupRoute).to("file://backup");
+...
+String startupRoute = "true";
+from("activemq:queue:special").autoStartup(startupRoute).to("file://backup");
+...
+from("activemq:queue:special").autoStartup("{{startupRouteProperty}}").to("file://backup");
+----
+
+[[Configuringroutestartuporderingandautostartup-Configuringstartingorderforroutes]]
+==== Configuring starting order for routes
+
+You can also configure the order in which routes are started. Previously
+Camel started the routes in a non deterministic order. Now you have fine
+grained control in which order the routes should be started. There is a
+new attribute `startupOrder` which is an `Integer` that states the order.
+Camel then sorts the routes before starting time. The routes with the
+lowest `startupOrder` are started first and the ones with the highest are
+started last.
+
+IMPORTANT: All `startupOrder` defined must be unique among all routes in your
+link:camelcontext.adoc[CamelContext]. Otherwise if there are clashes in
+`startupOrder` numbers among routes, the routes will fail to start up throwing
+`org.apache.camel.FailedToStartRouteException`.
+
+Normally you should also use numbers that are lower than 1000, as routes 
without
+an explicit `startupOrder` definition will have a number starting from 1000
+auto assigned. So view numbers from 1000 upwards as reserved internally
+for Camel itself.
+
+However, you can also utilise much higher numbers than 1000
+(to avoid collisions with those auto assigned numbers) to specify the last 
routes
+to start up. Normally the usage of numbers starting from 10000 should be safe
+for the purpose.
+
+In terms of the `startupOrder` there are no strict rules that it must
+start from 1 and increment by 1. You can for example use: 100, 200, 205,
+89 if you like. Only rule of thumb is that the numbers must be unique.
+
+[[Configuringroutestartuporderingandautostartup-Whydoyouwanttocontrolthestartingorder]]
+==== Why do you want to control the starting order?
+
+It can help in cases where routes are inter dependent on each other and
+also help with graceful shutting down Camel as Camel can stop the routes
+in the correct order as well.
+
+[NOTE]
+====
+**Stopping routes**
+
+*Camel 2.2:* Camel will stop the routes in the *same* order that they
+were started.
+
+*Camel 2.3:* Camel will stop the routes in the *reverse* order that they
+were started.
+====
+
+[[Configuringroutestartuporderingandautostartup-Examples]]
+==== Examples
+
+Let's try a couple of examples.
+
+[[Configuringroutestartuporderingandautostartup-Simpleexample]]
+===== Simple example
+
+[source,java]
+----
+    from("seda:foo").startupOrder(1).to("mock:result");
+    from("direct:start").startupOrder(2).to("seda:foo");
+----
+
+And the same example with XML DSL:
+
+[source,xml]
+----
+    <route startupOrder="1">
+        <from uri="seda:foo"/>
+        <to uri="mock:result"/>
+    </route>
+
+    <route startupOrder="2">
+        <from uri="direct:start"/>
+        <to uri="seda:foo"/>
+    </route>
+----
+
+In this example we have two routes in which we have started that the
+`direct:start` route should be started *after* the `seda:foo` route.
+As `direct:start` is consider the input and we want that `seda:foo`
+route to be up and running beforehand.
+
+You can also mix and match routes with and without `startupOrder`
+define.
+
+[[Configuringroutestartuporderingandautostartup-RouteswithstartupOrdermixedwithrouteswithout]]
+===== Routes with startupOrder mixed with routes without
+
+[source,java]
+----
+    from("seda:foo").startupOrder(1).to("mock:result");
+    from("direct:start").startupOrder(2).to("seda:foo");
+
+    from("direct:bar").to("seda:bar");
+----
+
+And the same example with XML DSL:
+
+[source,xml]
+----
+    <route startupOrder="1">
+        <from uri="seda:foo"/>
+        <to uri="mock:result"/>
+    </route>
+
+    <route startupOrder="2">
+        <from uri="direct:start"/>
+        <to uri="seda:foo"/>
+    </route>
+
+    <route>
+        <from uri="direct:bar"/>
+        <to uri="seda:bar"/>
+    </route>
+----
+
+In the route above we have *not* define a `startupOrder` on the last
+route `direct:bar` in which Camel will auto assign a number for it, in
+which this case will be 1000. So therefore the route will be started
+last.
+
+So you can use this to your advantage to only assign a `startupOrder` on
+the routes which really needs it.
+
+[[Configuringroutestartuporderingandautostartup-Routestostartuplast]]
+===== Routes to start up last
+
+[source,java]
+----
+    // use auto assigned startup ordering
+    from("direct:start").to("seda:foo");
+
+    // should start first
+    from("seda:foo").startupOrder(1).to("mock:result");
+
+    // should start last after the default routes
+    from("direct:bar").startupOrder(12345).to("seda:bar");
+
+    // use auto assigned startup ordering
+    from("seda:bar").to("mock:other");
+----
+
+In the example above the order of startups of routes should be:
+
+1. `seda://foo`
+2. `direct://start`
+3. `seda://bar`
+4. `direct://bar`
+
+[[Configuringroutestartuporderingandautostartup-Shutdown]]
+==== Shutdown
+
+*Camel 2.2:* Camel will shutdown the routes in the *same* order that
+they were started.
+
+*Camel 2.3:* Camel will shutdown the routes in the *reverse* order that
+they were started.
+
+See also link:graceful-shutdown.adoc[Graceful Shutdown].
+
+[[Configuringroutestartuporderingandautostartup-Seealso]]
+==== See also
+
+* link:configuring-camel.adoc[Configuring Camel]
+* link:graceful-shutdown.adoc[Graceful Shutdown]
+* link:user-guide.html[User Guide]
diff --git a/docs/user-manual/en/getting-started.adoc 
b/docs/user-manual/en/getting-started.adoc
index 8a105cfc34d..4715e4f9051 100644
--- a/docs/user-manual/en/getting-started.adoc
+++ b/docs/user-manual/en/getting-started.adoc
@@ -24,7 +24,7 @@ Working with CamelContexts and RouteBuilders
 To get started with Camel:
 
 1.  Create a CamelContext.
-2.  Optionally, link:configuring-camel.html[configure components or
+2.  Optionally, link:configuring-camel.adoc[configure components or
 endpoints].
 3.  Add whatever routing rules you wish using the DSL and
 RouteBuilder or using
diff --git a/docs/user-manual/en/graceful-shutdown.adoc 
b/docs/user-manual/en/graceful-shutdown.adoc
index b1a3dc1c170..ff8c2328f34 100644
--- a/docs/user-manual/en/graceful-shutdown.adoc
+++ b/docs/user-manual/en/graceful-shutdown.adoc
@@ -128,7 +128,7 @@ 
context.getShutdownStrategy().setLogInflightExchangesOnTimeout(false);
 You can configure the order in which routes should be started, and thus
 also the same order they are being shutdown. 
  See more at
-link:configuring-route-startup-ordering-and-autostartup.html[Configuring
+link:configuring-route-startup-ordering-and-autostartup.adoc[Configuring
 route startup ordering and autostartup].
 
 [[GracefulShutdown-Finegrainedconfiguration]]
@@ -463,7 +463,7 @@ option. See `GenericFileConsumer` for an example.
 [[GracefulShutdown-SeeAlso]]
 ==== See Also
 
-* link:configuring-route-startup-ordering-and-autostartup.html[Configuring
+* link:configuring-route-startup-ordering-and-autostartup.adoc[Configuring
 route startup ordering and autostartup]
 * link:advanced-configuration-of-camelcontext-using-spring.html[Advanced
 configuration of CamelContext using Spring]


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


> Update doc to clarify how to specify routes to start up last
> ------------------------------------------------------------
>
>                 Key: CAMEL-12988
>                 URL: https://issues.apache.org/jira/browse/CAMEL-12988
>             Project: Camel
>          Issue Type: Task
>          Components: documentation
>    Affects Versions: 2.23.0
>            Reporter: Tadayoshi Sato
>            Assignee: Tadayoshi Sato
>            Priority: Major
>
> To specify routes to start up last, you can set up the {{startupOrder}} 
> number to much bigger than {{1000}} (e.g. {{10000}}) and it is [the 
> officially supported 
> way|https://github.com/apache/camel/commit/f0d50d952e6cfee4890dac7b999edac055406dfd].
> However, the old doc is still obscure in that whether you can use the numbers 
> {{>= 1000}} for the {{startupOrder}} attribute. See:
> [http://camel.apache.org/configuring-route-startup-ordering-and-autostartup.html]
> {quote}You can also configure the order in which routes are started. 
> Previously Camel started the routes in a non deterministic order. Now you 
> have fine grained control in which order the routes should be started. There 
> is a new attribute startupOrder which is a Integer that states the order. 
> Camel then sorts the routes before starting time. The routes with the lowest 
> startupOrder is started first. All startupOrder defined must be unique among 
> all routes in your CamelContext.
>  You should also use numbers that are lower than 1000, as routes without an 
> explicit startupOrder define will have a number starting from 1000 auto 
> assigned. So view numbers from 1000 upwards as reserved internally for Camel 
> itself.
> {quote}
> Let's update the doc to clarify this supported way.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to