001package gu.simplemq.activemq;
002
003import javax.jms.Connection;
004import gu.simplemq.BaseMQProducer;
005import gu.simplemq.IConsumerAdvisor;
006import gu.simplemq.IProducer;
007import gu.simplemq.activemq.BaseSender.ProducerSender;
008/**
009 * {@link IProducer} ACTIVEMQ实现
010 * @author guyadong
011 *
012 */
013public class ActivemqProducer extends BaseMQProducer<Connection> implements AutoCloseable,ActivemqConstants{
014        private final AdvisoryMessageManager advisoryMessageManager;
015        private final ProducerSender sender;
016        public ActivemqProducer(ActivemqPoolLazy poolLazy) {
017                super(poolLazy);
018                this.advisoryMessageManager = AdvisoryMessageManager.instanceOf(poolLazy);
019                this.sender = new ProducerSender(advisoryMessageManager);
020        }
021
022        @Override
023        public IConsumerAdvisor getAdvisor() {
024                return advisoryMessageManager;
025        }
026
027        @Override
028        protected void doSend(Connection c, String channel, Iterable<String> messages) throws Exception {
029                sender.doSend(c, channel, messages);            
030        }
031
032        @Override
033        public void close()  {
034                advisoryMessageManager.close();
035        }
036
037}