| <?xml version="1.0" encoding="UTF-8"?> |
| <!-- |
| |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| |
| --> |
| <camelContext id="cdi-camel-xml" errorHandlerRef="error-handler" |
| xmlns="http://camel.apache.org/schema/spring" |
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| xsi:schemaLocation="http://camel.apache.org/schema/spring |
| http://camel.apache.org/schema/spring/camel-spring.xsd"> |
| |
| <propertyPlaceholder location="classpath:config.properties"/> |
| |
| <errorHandler id="error-handler" type="DeadLetterChannel" |
| deadLetterUri="direct:unplug" |
| onPrepareFailureRef="tracer"/> |
| |
| <!-- Declare a named CDI bean that can be injected in the application --> |
| <endpoint id="neo" uri="direct:neo"/> |
| |
| <route id="terminal"> |
| <!-- Read input from the console using the stream component --> |
| <from uri="stream:in?promptDelay=1000&promptMessage=Which pill (red|blue)?: "/> |
| <!-- To send messages to Neo --> |
| <to uri="ref:neo"/> |
| </route> |
| |
| <route id="matrix"> |
| <from uri="ref:neo"/> |
| <choice> |
| <when> |
| <simple>${body} contains '{{poison}}'</simple> |
| <throwException ref="morpheus"/> |
| </when> |
| <otherwise> |
| <bean ref="matrix"/> |
| <log message="${body}"/> |
| </otherwise> |
| </choice> |
| </route> |
| |
| <route id="unplug"> |
| <from uri="direct:unplug"/> |
| <!-- Let's disconnect from the matrix --> |
| <to uri="controlbus:route?routeId=terminal&action=stop&async=true"/> |
| <!-- And broadcast Neo's location thanks to the red pill tracing --> |
| <log message="Neo has been located in ${exchangeProperty.CamelFailureRouteId}"/> |
| <!-- For a rescue mission --> |
| <to uri="stub:rescue"/> |
| </route> |
| |
| </camelContext> |