java消息队列ActiveMQ之Comsumer

来源:互联网 发布:mac u盘复制文件 编辑:程序博客网 时间:2024/05/21 09:17

1、需要添加在上一篇博客中说到的依赖jar包
2、创建创建消费者

package com.activemq.demo;import java.util.concurrent.atomic.AtomicInteger;import javax.jms.Connection;import javax.jms.ConnectionFactory;import javax.jms.JMSException;import javax.jms.MessageConsumer;import javax.jms.Queue;import javax.jms.Session;import javax.jms.TextMessage;import org.apache.activemq.ActiveMQConnection;import org.apache.activemq.ActiveMQConnectionFactory;public class Comsumer {    private static final String USERNAME = ActiveMQConnection.DEFAULT_USER;    private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD;    private static final String BROKEN_URL = "tcp://192.168.0.0:61616";    ConnectionFactory connectionFactory;    Connection connection;    Session session;    ThreadLocal<MessageConsumer> threadLocal = new ThreadLocal<>();    AtomicInteger count = new AtomicInteger();    public void init() {        try {            connectionFactory = new ActiveMQConnectionFactory(USERNAME,                    PASSWORD, BROKEN_URL);            connection = connectionFactory.createConnection();            connection.start();            session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);        } catch (JMSException e) {            e.printStackTrace();        }    }    public void getMessage(String disname) {        try {            Queue queue = session.createQueue(disname);            MessageConsumer consumer = null;            if (threadLocal.get() != null) {                consumer = threadLocal.get();            } else {                consumer = session.createConsumer(queue);                threadLocal.set(consumer);            }            while (true) {                Thread.sleep(1000);                TextMessage msg = (TextMessage) consumer.receive();                if (msg != null) {                    msg.acknowledge();                    System.out.println("接收到消息:" + msg.getText() + " ||  "                            + count.getAndIncrement());                } else {                    break;                }            }        } catch (JMSException e) {            e.printStackTrace();        } catch (InterruptedException e) {            e.printStackTrace();        }    }}

3、测试

package com.activemq.demo;public class TestGetMsg {    public static void main(String[] args) {        Comsumer comsumer = new Comsumer();        comsumer.init();        TestGetMsg testGetMsg = new TestGetMsg();        try {            Thread.sleep(3000);        } catch (InterruptedException e) {            e.printStackTrace();        }        new Thread(testGetMsg.new ProductorMq(comsumer)).start();    }    private class ProductorMq implements Runnable {        Comsumer comsumer;        public ProductorMq(Comsumer comsumer) {            this.comsumer = comsumer;        }        @Override        public void run() {            while (true) {                    comsumer.getMessage("LGZ-MQ");//              try {//                  Thread.sleep(500);//              } catch (InterruptedException e) {//                  e.printStackTrace();//              }            }        }    }}