0
点赞
收藏
分享

微信扫一扫

jdk1.6集成activemq的2种方式


文章目录

  • ​​一、maven方式​​
  • ​​1. 依赖​​
  • ​​2. 发送端​​
  • ​​3. 接收端​​
  • ​​4. 工具类​​
  • ​​二、引入jar方式​​
  • ​​2.1.下载jar​​
  • ​​2.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方式

jdk1.6集成activemq的2种方式_apache

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​​​ 请跳转​​javascript:void(0)​​

2.2. 按需导入

jdk1.6集成activemq的2种方式_ActiveMQ_02

三、添加账号密码

源码分析:

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);


举报

相关推荐

0 条评论