jdk1.6集成activemq的2種方式

一、maven方式
1. 依賴
        <dependency>
            <groupId>org.apache.activemq</groupId>
            <artifactId>activemq-core</artifactId>
            <version>5.5.0</version>
        </dependency>
2. 發送端

簡潔版本

package mq;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnectionFactory;

public class Sender {
	public static void main(String[] args) throws Exception {
		// 1.創建連接工廠
		ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
				"tcp://192.168.0.119:61616");
		// 2.創建連接
		Connection connection = connectionFactory.createConnection();
		// 3.啓動連接
		connection.start();
		// 4.獲取session(會話對象) 參數1:是否啓動事務 參數2:消息確認方式
		Session session = connection.createSession(false,
				Session.AUTO_ACKNOWLEDGE);
		// 5.創建隊列對象
		Queue queue = session.createQueue("test-queue");
		// 6.創建消息生產者對象
		MessageProducer producer = session.createProducer(queue);
		// 7.創建消息對象(文本消息)
		TextMessage textMessage = session.createTextMessage("發送點點對消息模擬第一輪測試!");
		// 8.發送消息
		producer.send(textMessage);
		// 9.關閉資源
		producer.close();
		session.close();
		connection.close();
	}
}

測試版本

 package com.gblfy.activemq.qq;

import javax.jms.*;

import org.apache.activemq.ActiveMQConnectionFactory;

public class Sender {
    public static String ADDRESS = "192.168.0.119:61616";
    public static String QUEUE = "test-queue";
    public static String SENDMSG = "發送點點對消息模擬第一輪測試!";

    public static void main(String[] args) throws Exception {
        //連接工廠
        ConnectionFactory connectionFactory;
        //連接
        Connection connection = null;
        //會話 接受或者發送消息的線程
        Session session = null;
        //消息的目的地
        Queue queue;
        //消息生產者
        MessageProducer messageProducer = null;
        TextMessage textMessage;
        try {
            // 1.創建連接工廠
            connectionFactory = new ActiveMQConnectionFactory(
                    "tcp://" + ADDRESS);
            // 2.創建連接
            connection = connectionFactory.createConnection();
            // 3.啓動連接
            connection.start();
            // 4.獲取session(會話對象) 參數1:是否啓動事務 參數2:消息確認方式
            session = connection.createSession(false,
                    Session.AUTO_ACKNOWLEDGE);
            // 5.創建隊列對象
            queue = session.createQueue(QUEUE);
            // 6.創建消息生產者對象
            messageProducer = session.createProducer(queue);
            // 7.創建消息對象(文本消息)
            textMessage = session.createTextMessage(SENDMSG);
            // 8.發送消息
            messageProducer.send(textMessage);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (connection != null) {
                try {
                    // 9.關閉資源
                    messageProducer.close();
                    session.close();
                    connection.close();
                } catch (JMSException e) {
                    e.printStackTrace();
                }
            }
        }

    }
}

3. 接收端

簡潔版本

 package com.gblfy.activemq.qq;

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

public class Consumer {
	public static void main(String[] args) throws Exception {
		// 1.創建連接工廠
		ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
				"tcp://192.168.0.119:61616");
		// 2.創建連接
		Connection connection = connectionFactory.createConnection();
		// 3.啓動連接
		connection.start();
		// 4.獲取session(會話對象) 參數1:是否啓動事務 參數2:消息確認方式
		Session session = connection.createSession(false,
				Session.AUTO_ACKNOWLEDGE);
		// 5.創建隊列對象
		Queue queue = session.createQueue("test-queue");
		// 6.創建消息消費者對象
		MessageConsumer consumer = session.createConsumer(queue);
		// 7.設置監聽
		consumer.setMessageListener(new MessageListener() {

			@Override
			public void onMessage(Message message) {
				TextMessage textMessage = (TextMessage) message;
				try {
					System.out.println("提取的消息:" + textMessage.getText());
				} catch (JMSException e) {
					e.printStackTrace();
				}

			}
		});
		// 8.等待鍵盤輸入
		System.in.read();

		// 9.關閉資源
		consumer.close();
		session.close();
		connection.close();

	}
}

測試版本

package com.gblfy.activemq.qq;

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;
import java.io.IOException;

public class Consumer {
    public static String ADDRESS = "192.168.0.119:61616";
    public static String QUEUE = "test-queue";

    public static void main(String[] args) throws Exception {

        //連接工廠
        ConnectionFactory connectionFactory;
        //連接
        Connection connection = null;
        //會話 接受或者發送消息的線程
        Session session = null;
        //消息的目的地
        Queue queue;
        //消息生產者
        MessageConsumer consumer = null;
        // 1.創建連接工廠
        try {
            connectionFactory = new ActiveMQConnectionFactory(
                    "tcp://" + ADDRESS);
            // 2.創建連接
            connection = connectionFactory.createConnection();
            // 3.啓動連接
            connection.start();
            // 4.獲取session(會話對象) 參數1:是否啓動事務 參數2:消息確認方式
            session = connection.createSession(false,
                    Session.AUTO_ACKNOWLEDGE);
            // 5.創建隊列對象
            queue = session.createQueue(QUEUE);
            // 6.創建消息消費者對象
            consumer = session.createConsumer(queue);
            // 7.設置監聽
            consumer.setMessageListener(new MessageListener() {
                @Override
                public void onMessage(Message message) {
                    TextMessage textMessage = (TextMessage) message;
                    try {
                        System.out.println("提取的消息:" + textMessage.getText());
                    } catch (JMSException e) {
                        e.printStackTrace();
                    }
                }
            });
            // 8.等待鍵盤輸入
            System.in.read();
        } catch (JMSException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 9.關閉資源
            consumer.close();
            session.close();
            connection.close();
        }
    }
}

4. 工具類
package com.gblfy.activemq.qq;

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

public class MQUtil {

    //連接工廠
    ConnectionFactory connectionFactory;
    //連接
    Connection connection = null;
    //會話 接受或者發送消息的線程
    Session session = null;
    //消息的目的地
    Queue queue;

    public Queue createConnectionFactory(String address, String queueName) {

        try {
            // 1.創建連接工廠
            connectionFactory = new ActiveMQConnectionFactory(
                    "tcp://" + address);
            // 2.創建連接
            connection = connectionFactory.createConnection();
            // 3.啓動連接
            connection.start();
            // 4.獲取session(會話對象) 參數1:是否啓動事務 參數2:消息確認方式
            session = connection.createSession(false,
                    Session.AUTO_ACKNOWLEDGE);
            // 5.創建隊列對象
            queue = session.createQueue(queueName);
        } catch (JMSException e) {
            e.printStackTrace();
        }
        return queue;
    }

    public void sendMsg(String address, String queueName, String message) {
        MessageProducer messageProducer = null;
        TextMessage textMessage;
        try {
            // 6.創建消息生產者對象
            queue = createConnectionFactory(address, queueName);
            messageProducer = session.createProducer(queue);
            // 7.創建消息對象(文本消息)
            textMessage = session.createTextMessage(message);
            // 8.發送消息
            messageProducer.send(textMessage);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (connection != null) {
                try {
                    // 9.關閉資源
                    messageProducer.close();
                    session.close();
                    connection.close();
                } catch (JMSException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    public void recMsg(String address, String queueName) {
        //消息生產者
        MessageConsumer consumer = null;
        try {
            // 6.創建消息消費者對象
            queue = createConnectionFactory(address, queueName);
            consumer = session.createConsumer(queue);
            // 7.設置監聽
            consumer.setMessageListener(new MessageListener() {
                @Override
                public void onMessage(Message message) {
                    TextMessage textMessage = (TextMessage) message;
                    try {
                        System.out.println("提取的消息:" + textMessage.getText());
                    } catch (JMSException e) {
                        e.printStackTrace();
                    }
                }
            });
            // 8.等待鍵盤輸入
            System.in.read();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (connection != null) {
                try {
                    // 9.關閉資源
                    consumer.close();
                    session.close();
                    connection.close();
                } catch (JMSException e) {
                    e.printStackTrace();
                }
            }
        }
    }


    public static void main(String[] args) {
        String ADDRESS = "192.168.0.119:61616";
        String QUEUE = "test-queue";
        String SENDMSG = "發送點點對消息模擬第一輪測試!";
        MQUtil mqUtil = new MQUtil();
        mqUtil.sendMsg(ADDRESS, QUEUE, SENDMSG);

        mqUtil.recMsg(ADDRESS, QUEUE);
    }
}

二、引入jar方式

在這裏插入圖片描述

2.1.下載jar

建議用maven座標先把需要的jar下載到本地倉庫,再把本地倉庫中的jar複製到工程的lib文件夾下面

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

如果出現SLF4J:Failed to load class org.slf4j.impl.StaticLoggerBinder
請跳轉https://gblfy.blog.csdn.net/article/details/107018564

2.2. 按需導入

在這裏插入圖片描述

三、添加賬號密碼

源碼分析:

 public ActiveMQConnectionFactory(String userName, String password, String brokerURL) {
        setUserName(userName);
        setPassword(password);
        setBrokerURL(brokerURL);
    }

從源碼看出在創建連接工廠的時候,在添加賬號面的參數即可,注意參數順序。

例如:

   //連接用戶名
    private static final String USERNAME = "admin";
    //連接密碼
    private static final String PASSWORD = "admin";
    //連接地址
    private static final String BROKEURL = "10.5.6.19:61616";

    connectionFactory = new ActiveMQConnectionFactory(
                    USERNAME,"tcp://" + BROKEURL,PASSWORD);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章