001    /**
002     * Licensed to the Apache Software Foundation (ASF) under one or more
003     * contributor license agreements.  See the NOTICE file distributed with
004     * this work for additional information regarding copyright ownership.
005     * The ASF licenses this file to You under the Apache License, Version 2.0
006     * (the "License"); you may not use this file except in compliance with
007     * the License.  You may obtain a copy of the License at
008     *
009     *      http://www.apache.org/licenses/LICENSE-2.0
010     *
011     * Unless required by applicable law or agreed to in writing, software
012     * distributed under the License is distributed on an "AS IS" BASIS,
013     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014     * See the License for the specific language governing permissions and
015     * limitations under the License.
016     */
017    package org.apache.camel.example.client;
018    
019    import org.apache.camel.ExchangePattern;
020    import org.apache.camel.ProducerTemplate;
021    import org.springframework.context.ApplicationContext;
022    import org.springframework.context.support.ClassPathXmlApplicationContext;
023    
024    /**
025     * Client that uses the {@link ProducerTemplate} to easily exchange messages with the Server.
026     * <p/>
027     * Requires that the JMS broker is running, as well as CamelServer
028     */
029    public final class CamelClient {
030        private CamelClient() {
031            // Helper class
032        }
033    
034        // START SNIPPET: e1
035        public static void main(final String[] args) throws Exception {
036            System.out.println("Notice this client requires that the CamelServer is already running!");
037    
038            ApplicationContext context = new ClassPathXmlApplicationContext("camel-client.xml");
039    
040            // get the camel template for Spring template style sending of messages (= producer)
041            ProducerTemplate camelTemplate = (ProducerTemplate) context.getBean("camelTemplate");
042    
043            System.out.println("Invoking the multiply with 22");
044            // as opposed to the CamelClientRemoting example we need to define the service URI in this java code
045            int response = (Integer)camelTemplate.sendBody("jms:queue:numbers", ExchangePattern.InOut, 22);
046            System.out.println("... the result is: " + response);
047    
048            System.exit(0);
049        }
050        // END SNIPPET: e1
051    
052    }