001    /**
002     *
003     * Licensed to the Apache Software Foundation (ASF) under one or more
004     * contributor license agreements.  See the NOTICE file distributed with
005     * this work for additional information regarding copyright ownership.
006     * The ASF licenses this file to You under the Apache License, Version 2.0
007     * (the "License"); you may not use this file except in compliance with
008     * the License.  You may obtain a copy of the License at
009     *
010     * http://www.apache.org/licenses/LICENSE-2.0
011     *
012     * Unless required by applicable law or agreed to in writing, software
013     * distributed under the License is distributed on an "AS IS" BASIS,
014     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015     * See the License for the specific language governing permissions and
016     * limitations under the License.
017     */
018    package org.apache.activemq.tool;
019    
020    import javax.jms.Connection;
021    import javax.jms.ConnectionFactory;
022    import javax.jms.DeliveryMode;
023    import javax.jms.Destination;
024    import javax.jms.JMSException;
025    import javax.jms.Message;
026    import javax.jms.MessageProducer;
027    import javax.jms.Session;
028    
029    /**
030     * @version $Revision: 1.3 $
031     */
032    public class MemProducer {
033        protected Connection connection;
034        protected MessageProducer producer;
035    
036        public MemProducer(ConnectionFactory fac, Destination dest) throws JMSException {
037            connection = fac.createConnection();
038            Session s = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
039            producer = s.createProducer(dest);
040        }
041    
042        public void setDeliveryMode(int mode) throws JMSException {
043            producer.setDeliveryMode(mode);
044        }
045    
046        public void start() throws JMSException {
047            connection.start();
048        }
049    
050        public void stop() throws JMSException {
051            connection.stop();
052        }
053    
054        public void shutDown() throws JMSException {
055            connection.close();
056        }
057    
058        public void sendMessage(Message msg) throws JMSException {
059            sendMessage(msg, null, 0);
060        }
061    
062        /*
063        *   allow producer to attach message counter on its header. This will be used to verify message order
064        *
065        */
066        public void sendMessage(Message msg, String headerName, long headerValue) throws JMSException {
067            if (headerName != null) {
068                msg.setLongProperty(headerName, headerValue);
069            }
070    
071            producer.send(msg);
072    
073        }
074    
075    }