ActivityMQ实现生产者和消费者

来源:互联网 发布:淘宝嘉年华是什么活动 编辑:程序博客网 时间:2024/05/16 23:36

生产者:

public class Producer {  
  
    //默认连接用户名  
    private static final String USERNAME = ActiveMQConnection.DEFAULT_USER;  
    //默认连接密码  
    private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD;  
    //默认连接地址:tcp://localhost:61616  
    private static final String BROKEURL = ActiveMQConnection.DEFAULT_BROKER_URL;  
    //发送的消息数量  
    private static final int SENDNUM = 10;  
  
    public static void main(String[] args) {  
        //连接工厂,JMS 用它创建连接  
        ConnectionFactory connectionFactory;  
        //连接,JMS 客户端到JMS Provider 的连接  
        Connection connection = null;  
        //会话: 一个发送或接收消息的线程  
        Session session;  
        //消息的目的地;消息发送给谁  
        Destination destination;  
        //消息生产者  
        MessageProducer messageProducer;  
        //实例化连接工厂  
        connectionFactory = new ActiveMQConnectionFactory(Producer.USERNAME, Producer.PASSWORD, Producer.BROKEURL);  
  
        try {  
            //通过连接工厂获取连接  
            connection = connectionFactory.createConnection();  
            //启动连接  
            connection.start();  
            //创建session  
            session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);  
            //创建一个名称为HelloWorld的消息队列  
            destination = session.createQueue("HelloWorld");  
            //创建消息生产者  
            messageProducer = session.createProducer(destination);  
            //发送消息  
            sendMessage(session, messageProducer);  
  
            session.commit();  
  
        }catch (Exception e) {  
            e.printStackTrace();  
        }finally{  
            if(connection != null){  
                try {  
                    connection.close();  
                } catch (JMSException e) {  
                    e.printStackTrace();  
                }  
            }  
        }  
  
    }  
    /** 
     * 发送消息 
     * @param session 
     * @param messageProducer  消息生产者 
     * @throws Exception 
     */  
    public static void sendMessage(Session session,MessageProducer messageProducer) throws Exception{  
        for (int i = 0; i < Producer.SENDNUM; i++) {  
            //创建一条文本消息   
            TextMessage message = session.createTextMessage("ActiveMQ 发送消息" +i);  
            System.out.println("发送消息:Activemq 发送消息" + i);  
            //通过消息生产者发出消息   
            messageProducer.send(message);  
        }  
  
    }  
}  


消费者:

public class Consumer {  
  
    //默认连接用户名  
    private static final String USERNAME = ActiveMQConnection.DEFAULT_USER;  
    //默认连接密码  
    private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD;  
    //默认连接地址  
    private static final String BROKEURL = ActiveMQConnection.DEFAULT_BROKER_URL;  
  
    public static void main(String[] args) {  
        ConnectionFactory connectionFactory;//连接工厂  
        Connection connection = null;//连接  
  
        Session session;//会话 接受或者发送消息的线程  
        Destination destination;//消息的目的地  
  
        MessageConsumer messageConsumer;//消息的消费者  
  
        //实例化连接工厂  
        connectionFactory = new ActiveMQConnectionFactory(Consumer.USERNAME, Consumer.PASSWORD, Consumer.BROKEURL);  
  
        try {  
            //通过连接工厂获取连接  
            connection = connectionFactory.createConnection();  
            //启动连接  
            connection.start();  
            //创建session  
            session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);  
            //创建一个连接HelloWorld的消息队列  
            destination = session.createQueue("HelloWorld");  
            //创建消息消费者  
            messageConsumer = session.createConsumer(destination);  
  
            while (true) {  
                //设置接收者接收消息的时间,为了便于测试,这里定为100s  
                TextMessage textMessage = (TextMessage) messageConsumer.receive(100000);  
                if(textMessage != null){  
                    System.out.println("收到的消息:" + textMessage.getText());  
                }else {  
                    break;  
                }  
            }  
  
        }catch (Exception e) {  
            e.printStackTrace();  
        }finally{  
            if(connection != null){  
                try {  
                    connection.close();  
                } catch (JMSException e) {  
                    e.printStackTrace();  
                }  
            }  
        }  
  
    }  
}  

0 0
原创粉丝点击