<?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.
-->
<!-- START SNIPPET: example -->
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
       http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
    ">

  <camelContext xmlns="http://camel.apache.org/schema/spring" trace="true">
    <route>
      <from uri="activemq:ActiveMQ.DLQ?mapJmsMessage=false"/>
      <setHeader headerName="CamelRedeliveryMarker"><constant>true</constant></setHeader>
      <!--  delay redelivery by 1 second using schedualler, the determination 
              of the delay can come form a processor to make it as complicated as needed -->
      <setHeader headerName="AMQ_SCHEDULED_DELAY"><constant>1000</constant></setHeader>
      <to pattern="InOnly" uri="activemq:camelRedeliveryQ?explicitQosEnabled=true&amp;messageConverter=#messageConverter"/>
    </route>
  </camelContext>

  <bean id="connectionFactory" class="org.apache.activemq.spring.ActiveMQConnectionFactory">
    <property name="brokerURL" value="vm://localhost?broker.persistent=false"/>
  </bean>
  
  <bean id="messageConverter" class="org.apache.activemq.camel.converter.IdentityMessageReuseConverter" />

</beans>
        <!-- END SNIPPET: example -->
