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);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章