ActiveMQ初識

第一次學習使用ActiveMQ,安裝環境windows10

安裝步驟:

1:下載apache-activemq-5.15.4-bin.zip

2:解壓即可

安裝完成後的目錄結構:

啓動在bin目錄下,對應的有兩個文件夾,32和64的根據自己電腦操作系統選擇相應目錄

樓主的是win64,進入目錄雙擊activemq.bat即可啓動

驗證是否啓動成功訪問:http://localhost:8161/ 進入後臺管理系統

登陸密碼默認是:admin/admin

ActiveMQ啓動默認開啓了兩個端口:8161和61616

8161端口:是後臺管理端口  ,可在conf/jetty.xml中修改

61616端口:是java開發連接的端口,可在/conf/activemq.xml

代碼測試:

maven依賴:

<dependency>
     <groupId>org.apache.activemq</groupId>
     <artifactId>activemq-core</artifactId>
     <version>5.5.0</version>
</dependency>
<dependency>
      <groupId>org.apache.activemq</groupId>
      <artifactId>activemq-pool</artifactId>
      <version>5.7.0</version>
</dependency>

 

生產者:

package com.test.mq.queue;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnectionFactory;

public class produceMq {
	private static final String SUBJECT = "test-activemq-queue";
	//連接賬號
    private static String userName = "admin";
    //連接密碼
    private static String password = "admin";
    //連接地址
    private static String brokerURL = "tcp://localhost:61616";
	public static void main(String[] args) throws JMSException {
		//初始化連接工廠  
		ConnectionFactory connectionFactory = new 
                     ActiveMQConnectionFactory(userName,password,brokerURL);
		//獲得連接
		Connection conn = connectionFactory.createConnection();
		//啓動連接
		conn.start();
		//創建Session,此方法第一個參數表示會話是否在事務中執行,第二個參數設定會話的應答模式
		Session session = conn.createSession(true, Session.AUTO_ACKNOWLEDGE);
		//創建隊列
		Destination dest = session.createQueue(SUBJECT);
		//createTopic方法用來創建Topic
		//session.createTopic("TOPIC");
		//通過session可以創建消息的生產者
		MessageProducer producer = session.createProducer(dest);
//		producer.setDeliveryMode(DeliveryMode.PERSISTENT);持久化
		for (int i=0;i<100;i++) {
			//初始化一個mq消息
			TextMessage message = session.createTextMessage("hello active mq 中文" + i);
			//發送消息
			producer.send(message);//
		}
		session.commit();
		session.close();
		//關閉mq連接
		conn.close();
	}
}

消費者:

package com.test.mq.queue;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class ConsumerMq {
	private static final Logger LOGGER = LoggerFactory.getLogger(ConsumerMq.class);
    private static final String SUBJECT = "test-activemq-queue";
    //連接賬號
    private static String userName = "admin";
    //連接密碼
    private static String password = "admin";
    //連接地址
    private static String brokerURL = "tcp://localhost:61616";
    public static void main(String[] args) throws JMSException {
    	//初始化ConnectionFactory
    	ConnectionFactory connectionFactory = new                 
                          ActiveMQConnectionFactory(userName,password,brokerURL);

        //創建mq連接
        Connection conn = connectionFactory.createConnection();
//        conn.setClientID("");
        //啓動連接
        conn.start();

        //創建會話
        Session session = conn.createSession(true, Session.AUTO_ACKNOWLEDGE);

        //通過會話創建目標 參數名稱要和生產者一致
        Destination dest = session.createQueue(SUBJECT);
//      session.createDurableSubscriber(topic, "隨便寫");持久化消息接收
        //創建mq消息的消費者
        MessageConsumer consumer = session.createConsumer(dest);
        int i=0;
        while(i<100){
        	TextMessage message = (TextMessage) consumer.receive();
//        	session.commit();
//        	message.acknowledge();
        	onMessage(message);
        	i++;
        }
        
        //初始化MessageListener
        ConsumerMq me = new ConsumerMq();

        //給消費者設定監聽對象
//        consumer.setMessageListener(me);
    }

    public static void onMessage(Message message) {
        TextMessage txtMessage = (TextMessage)message;
        try {
        	System.out.println("get message " + txtMessage.getText());
            LOGGER.info ("get message " + txtMessage.getText());
        } catch (JMSException e) {
            LOGGER.error("error {}", e);
        }
    }
}

一隻行走的小笨猿!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章