<?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.

-->
<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.xsd
        http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">

  <!-- setup ActiveMQ Artemis connection factory -->
  <bean id="artemisConnectionFactory" class="org.apache.activemq.artemis.jms.client.ActiveMQJMSConnectionFactory">
    <constructor-arg index="0" value="tcp://localhost:61616"/>
  </bean>

  <bean id="jms" class="org.apache.camel.component.jms.JmsComponent">
    <!-- specify connection factory on JMS component -->
    <property name="connectionFactory" ref="artemisConnectionFactory"/>
  </bean>

  <camelContext id="myCamel" xmlns="http://camel.apache.org/schema/spring">

    <route>
      <from uri="file:target/inbox"/>
      <log message="Sending file ${file:name} to Artemis"/>
      <to uri="jms:queue:data"/>
      <log message="Finish sending file to Artemis"/>
    </route>

    <!-- turn on stream caching so we can stream big messages from Artemis
         to spool disk to avoid reading into memory -->
    <route streamCache="true">
      <from uri="jms:queue:data"/>
      <log message="Received data from Artemis"/>
      <to uri="file:target/outbox"/>
      <log message="Finish saving data from Artemis as file"/>
    </route>

  </camelContext>

</beans>
