activemq测试类

来源:互联网 发布:广州淘宝公司招聘 编辑:程序博客网 时间:2024/06/05 05:34

1、创建一个maven项目,pom.xml配置如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>cn.mq.maven</groupId>
<artifactId>activeMQ_helloworld</artifactId>
<version>0.0.1-SNAPSHOT</version>

<dependencies>

<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
<version>5.14.0</version>
</dependency>

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>

</project>



2、创建测试类:

1、生产者

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.MapMessage;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;
import javax.jms.TopicConnection;
import javax.jms.TopicConnectionFactory;
import javax.jms.TopicPublisher;
import javax.jms.TopicSession;


import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.junit.Test;


public class Product {


public static void main(String[] args) {


try {
// 创建mq工程类
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory();
// 获取链接
Connection connection = connectionFactory.createConnection();
// 获取session
Session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
// 创建一个消息队列
Queue queue = session.createQueue("helloworld");
// 创建生产者
MessageProducer producer = session.createProducer(queue);
System.out.println("生产者。。。。。。。。。。。");
for (int i = 0; i < 10; i++) {
TextMessage message = session.createTextMessage("hello world !" + i);
System.out.println(message.getText());
// 发送消息
producer.send(message);
}
// 提交事物
session.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {


}
}


@Test
public void testQueueSender() {


try {
// 创建mq工程类
QueueConnectionFactory connectionFactory = new ActiveMQConnectionFactory();
// 获取链接
QueueConnection connection = connectionFactory.createQueueConnection();


connection.start();


// 获取session
QueueSession queueSession = connection.createQueueSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
// 创建一个消息队列
Queue queue = queueSession.createQueue("helloworld2");


// 创建生产者
QueueSender createSender = queueSession.createSender(queue);


// 设置持久化模式
// createSender.setDeliveryMode(DeliveryMode.NON_PERSISTENT);


for (int i = 0; i < 10; i++) {
String message = "发送消息第" + (i + 1) + "条";
MapMessage map = queueSession.createMapMessage();
map.setString("text", message);
map.setLong("time", System.currentTimeMillis());
System.out.println(map);
createSender.send(map);
}
// 提交事物
queueSession.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {


}
}


// 发送次数
public static final int SEND_NUM = 5;
// tcp 地址
public static final String BROKER_URL = "tcp://localhost:61616";
// 目标,在ActiveMQ管理员控制台创建 http://localhost:8161/admin/queues.jsp
public static final String DESTINATION = "hoo.mq.topic";


@Test
public void testPublisherTopic() throws Exception {


TopicConnection connection = null;
TopicSession session = null;
try {
// 创建链接工厂
TopicConnectionFactory factory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,
ActiveMQConnection.DEFAULT_PASSWORD, BROKER_URL);
// 通过工厂创建一个连接
connection = factory.createTopicConnection();
// 启动连接
connection.start();
// 创建一个session会话
session = connection.createTopicSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
// 创建一个消息队列
Topic topic = session.createTopic(DESTINATION);
// 创建消息发送者
TopicPublisher publisher = session.createPublisher(topic);
// 设置持久化模式
publisher.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
for (int i = 0; i < SEND_NUM; i++) {
String message = "发送消息第" + (i + 1) + "条";


MapMessage map = session.createMapMessage();
map.setString("text", message);
map.setLong("time", System.currentTimeMillis());
System.out.println(map);


publisher.send(map);
}
// 提交会话
session.commit();


} catch (Exception e) {
throw e;
} finally {
// 关闭释放资源
if (session != null) {
session.close();
}
if (connection != null) {
connection.close();
}
}
}


}

2、消费者

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.MapMessage;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueReceiver;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;
import javax.jms.TopicConnection;
import javax.jms.TopicConnectionFactory;
import javax.jms.TopicSession;
import javax.jms.TopicSubscriber;


import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.junit.Test;


public class Customer {


public static void main(String[] args) throws Exception {
ConnectionFactory conFactory = new ActiveMQConnectionFactory();
// 创建链接
Connection connection = conFactory.createConnection();
// 开启连接
connection.start();
// 创建sesssion
Session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
// 创建消息队列
Queue queue = session.createQueue("helloworld");
// 创建消费者
MessageConsumer consumer = session.createConsumer(queue);
System.out.println("消费者。。。。。。。。。。。");
while (true) {
TextMessage message = (TextMessage) consumer.receive(1000);
if (message != null) {
String str = message.getText();
System.out.println(str);
} else {
break;
}
}
}


@Test
public void customerLinster() throws Exception {
ConnectionFactory conFactory = new ActiveMQConnectionFactory();
// 创建链接
Connection connection = conFactory.createConnection();
// 开启连接
connection.start();
// 创建sesssion
Session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
// 创建消息队列
Queue queue = session.createQueue("helloworld");
// 创建消费者
MessageConsumer consumer = session.createConsumer(queue);
System.out.println("消费者。。。。。。。。。。。");
// 设置监听器,实时监控,只要有生产,消费者马上消费
consumer.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message message) {
try {
if (message instanceof TextMessage) {
TextMessage msgMessage = (TextMessage) message;
String text = msgMessage.getText();
System.out.println(text);
} else if (message instanceof MapMessage) {
MapMessage msgMessage = (MapMessage) message;
System.out.println(msgMessage.getString("text"));
}
} catch (Exception e) {
e.printStackTrace();
}


}
});


while (true) {
// 不能让junit线程死掉
}
}


@Test
public void testQueueReceiver() {


try {
// 创建mq工程类
QueueConnectionFactory connectionFactory = new ActiveMQConnectionFactory();
// 获取链接
QueueConnection connection = connectionFactory.createQueueConnection();
// 启动链接
connection.start();


// 获取session
QueueSession queueSession = connection.createQueueSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
// 创建一个消息队列
Queue queue = queueSession.createQueue("helloworld2");


// 创建生产者
QueueReceiver receiver = queueSession.createReceiver(queue);


receiver.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message message) {
MapMessage map = (MapMessage) message;
try {
System.out.println(map.getString("text"));
} catch (Exception e) {
e.printStackTrace();
}
}
});
// 提交会话
queueSession.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {


}
}


// tcp 地址
public static final String BROKER_URL = "tcp://localhost:61616";
// 目标,在ActiveMQ管理员控制台创建 http://localhost:8161/admin/queues.jsp
public static final String TARGET = "hoo.mq.topic";


@Test
public void testCreateSubscriber() throws Exception {


TopicConnection connection = null;
TopicSession session = null;
try {
// 创建链接工厂
TopicConnectionFactory factory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,
ActiveMQConnection.DEFAULT_PASSWORD, BROKER_URL);
// 通过工厂创建一个连接
connection = factory.createTopicConnection();
// 启动连接
connection.start();
// 创建一个session会话
session = connection.createTopicSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
// 创建一个消息队列
Topic topic = session.createTopic(TARGET);
// 创建消息制作者
TopicSubscriber subscriber = session.createSubscriber(topic);


subscriber.setMessageListener(new MessageListener() {
public void onMessage(Message msg) {
if (msg != null) {
MapMessage map = (MapMessage) msg;
try {
System.out.println(map.getLong("time") + "接收#" + map.getString("text"));
} catch (JMSException e) {
e.printStackTrace();
}
}
}
});
// 提交会话
session.commit();
} catch (Exception e) {
throw e;
} finally {
// 关闭释放资源
if (session != null) {
session.close();
}
if (connection != null) {
connection.close();
}
}
}
}

原创粉丝点击