ActiveMQ第一課

windows下載:http://activemq.apache.org/download-archives.html 

啓動:http://localhost:8161/admin

默認用戶名密碼爲admin、admin


package mq.demo;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.command.ActiveMQQueue;

import javax.jms.*;

/**
 * Created by 79782 on 2018/7/5.
 */
public class MQServer {
    public static void main(String[] args) throws JMSException {
        String brokerUrl="tcp://127.0.0.1:61616";
        ConnectionFactory factory=new ActiveMQConnectionFactory(brokerUrl);
        //創建連接對象並啓動
        Connection connection = factory.createConnection();
        connection.start();//注意開啓連接
        //true將生產者所有操作作爲一個事物管理
        //Session session=connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
        Session session=connection.createSession(Boolean.TRUE, Session.CLIENT_ACKNOWLEDGE);
        ActiveMQQueue activeMQQueue = new ActiveMQQueue("MQ-QUEUE");
        MessageProducer producer = session.createProducer(activeMQQueue);
        for(int i=0;i<3;i++){
            TextMessage textMessage = session.createTextMessage("發送的消息"+(i+1));
            //生產者把消息發送到指定的目的地
            producer.send(textMessage);
        }
        //提交事務,不提交事務代表客戶端可以重複消費
        session.commit();
        //釋放資源
        session.close();
        if(null!=connection){
            connection.close();
        } 
    }
}
package mq.demo;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.command.ActiveMQQueue;

import javax.jms.*;

/**
 * Created by 79782 on 2018/7/5.
 */
public class MQConsumer {
    public static void main(String[] args) throws Exception {
        String brokerUrl="tcp://127.0.0.1:61616";
        ConnectionFactory factory=new ActiveMQConnectionFactory(brokerUrl);
        //創建連接對象並啓動
        Connection connection = factory.createConnection();
        connection.start();//注意開啓連接
        //true將生產者所有操作作爲一個事物管理
        Session session=connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
        ActiveMQQueue activeMQQueue = new ActiveMQQueue("MQ-QUEUE");
        MessageConsumer consumer = session.createConsumer(activeMQQueue);
        for(int i=0;i<3;i++){
            //接受的是一個消息
            Message receive = consumer.receive();
            if(receive instanceof TextMessage){
                TextMessage message=(TextMessage)receive;
                System.out.println(message.getText());
            }
        }
        session.commit();
        System.in.read();
        //釋放資源
        session.close();
        if(null!=connection){
            connection.close();
        }
    }
}
package mq.demo;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.command.ActiveMQQueue;

import javax.jms.*;

/**
 * Created by 79782 on 2018/7/5.
 * 異步消費:服務器生產的同時客戶端在消費
 */
public class AsyncMQConsumer {
    public static void main(String[] args) throws
            Exception {
        String brokerUrl="tcp://127.0.0.1:61616";
        ConnectionFactory factory=new ActiveMQConnectionFactory(brokerUrl);
        //創建連接對象並啓動
        Connection connection = factory.createConnection();
        connection.start();//注意開啓連接
        //true將生產者所有操作作爲一個事物管理
        Session session=connection.createSession(Boolean.FALSE, Session.CLIENT_ACKNOWLEDGE);
        ActiveMQQueue activeMQQueue = new ActiveMQQueue("MQ-QUEUE");
        MessageConsumer consumer = session.createConsumer(activeMQQueue);
        consumer.setMessageListener(new MessageListener() {
            @Override
            public void onMessage(Message receive) {
                if(receive instanceof TextMessage){
                    TextMessage message=(TextMessage)receive;
                    try {
                        System.out.println(message.getText());
                        //手動簽收
                        message.acknowledge();
                    } catch (JMSException e) {
                        e.printStackTrace();
                    }
                }
            }
        });
        System.in.read();
        //釋放資源
        session.close();
        if(null!=connection){
            connection.close();
        }
    }
}

發佈了98 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章