001    /**
002     *
003     * Copyright 2004 Protique Ltd
004     *
005     * Licensed under the Apache License, Version 2.0 (the "License");
006     * you may not use this file except in compliance with the License.
007     * 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     **/
018    package org.activemq.benchmark;
019    
020    
021    /**
022     * @author James Strachan
023     * @version $Revision$
024     */
025    public class ProducerConsumer extends Producer {
026    
027        private Consumer consumer = new Consumer();
028    
029        public static void main(String[] args) {
030            ProducerConsumer tool = new ProducerConsumer();
031            if (args.length > 0) {
032                tool.setUrl(args[0]);
033            }
034            if (args.length > 1) {
035                tool.setTopic(parseBoolean(args[1]));
036            }
037            if (args.length > 2) {
038                tool.setSubject(args[2]);
039            }
040            if (args.length > 3) {
041                tool.setDurable(Boolean.getBoolean(args[3]));
042            }
043            if (args.length > 4) {
044                tool.setConnectionCount(Integer.parseInt(args[4]));
045            }
046            try {
047                tool.run();
048            }
049            catch (Exception e) {
050                System.out.println("Caught: " + e);
051                e.printStackTrace();
052            }
053        }
054    
055        public ProducerConsumer() {
056        }
057    
058        public void run() throws Exception {
059            consumer.start();
060            consumer.subscribe();
061            start();
062            publish();
063        }
064    
065        public void setTopic(boolean topic) {
066            super.setTopic(topic);
067            consumer.setTopic(topic);
068        }
069    
070        public void setSubject(String subject) {
071            super.setSubject(subject);
072            consumer.setSubject(subject);
073        }
074    
075        public void setUrl(String url) {
076            super.setUrl(url);
077            consumer.setUrl(url);
078        }
079    
080        protected boolean useTimerLoop() {
081            return false;
082        }
083    }