Shashank Mugatkar created CAMEL-19422:
-----------------------------------------

             Summary: camel-core using a thread to stop a route from a route
                 Key: CAMEL-19422
                 URL: https://issues.apache.org/jira/browse/CAMEL-19422
             Project: Camel
          Issue Type: Bug
          Components: came-core
    Affects Versions: 3.20.3
            Reporter: Shashank Mugatkar
         Attachments: log.txt

I have multiple messages which should be sent to a MQ 'foo'. After sending a 
message from 'route-1', the program should wait for a reply on MQ 'bar'. Only 
after getting a reply on queue 'bar', the next message should be sent.

[How can I stop a route from a route :: Apache 
Camel|https://camel.apache.org/manual/faq/how-can-i-stop-a-route-from-a-route.html]

I have followed the steps given in the documentation. All the messages are 
getting routed and then the route is getting suspended.

*input.txt*

{{}}
{noformat}

{noformat}
{{msg1,msg2,msg3,msg4,msg5}}

 

*beans.xml*

 
{code:java}
<camelContext id="orc-1" xmlns="http://camel.apache.org/schema/spring";>
<route id="route-1">
    <from uri="file://D://camelInput?fileName=input.txt" />
    <split>
        <tokenize token="," />
        <log message="${body}" />
        <to uri="jms:queue:foo" />
        <process ref="postProcessor" />
    </split>
</route>
<route id="route-2">
    <from uri="jms:queue:bar" />
    <!--restart route-1-->
</route>
</camelContext> {code}
 

*{{PostProcessor.java}}*

 
{code:java}
public class PostProcessor implements Processor {

    Thread stop;

    @Override
    public void process(Exchange exchange) throws Exception {
        // stop this route using a thread that will stop
        // this route gracefully while we are still running
        if (stop == null) {
            stop = new Thread() {
                @Override
                public void run() {
                    try {
                        
exchange.getContext().getRouteController().suspendRoute("route-1");
                    } catch (Exception e) {
                        // ignore
                    }
                }
            };
        }
        // start the thread that stops this route
        stop.start();
    }
} 
{code}
**

 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to