1、生产者
package com.demo.helloworld;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
public class JMSProducer {
// 默认连接用户名
private static final String USERNAME = ActiveMQConnection.DEFAULT_USER;
// 默认连接密码
private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD;
// 默认连接地址
private static final String BROKEURL = ActiveMQConnection.DEFAULT_BROKER_URL;
// 队列名称
private static final String QUENENAME = "Jack";
public static final int SENDNUM = 10;
// 连接工厂
static ConnectionFactory connectionFactory;
// 连接
static Connection connection = null;
// 会话 接受或者发送消息的线程
static Session session;
// 消息的目的地
static Destination destination;
// 消息生产者
static MessageProducer messageProducer;
// 创建连接
static {
// 实例化连接工厂
connectionFactory = new ActiveMQConnectionFactory(JMSProducer.USERNAME, JMSProducer.PASSWORD,
JMSProducer.BROKEURL);
try {
// 通过连接工厂获取连接
connection = connectionFactory.createConnection();
// 启动连接
connection.start();
// 创建session
session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
// 创建一个名称为Jack的消息队列
destination = session.createQueue(JMSProducer.QUENENAME);
// 创建消息生产者
messageProducer = session.createProducer(destination);
} catch (JMSException e) {
System.out.println("创建连接异常");
}
}
// 发送消息
public static void sendMessage(String message) {
try {
TextMessage txtMsg = session.createTextMessage(message);
messageProducer.send(txtMsg);
session.commit();
} catch (JMSException e) {
System.out.println("消息发送异常");
}
}
}
2、消费者
package com.demo.helloworld;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
public class JMSConsumer {
// 默认连接用户名
private static final String USERNAME = ActiveMQConnection.DEFAULT_USER;
// 默认连接密码
private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD;
// 默认连接地址
private static final String BROKEURL = ActiveMQConnection.DEFAULT_BROKER_URL;
// 队列名称
private static final String QUENENAME = "Jack";
static ConnectionFactory connectionFactory;// 连接工厂
static Connection connection = null;// 连接
static Session session;// 会话 接受或者发送消息的线程
static Destination destination;// 消息的目的地
static MessageConsumer messageConsumer;// 消息的消费者
static {
// 实例化连接工厂
connectionFactory = new ActiveMQConnectionFactory(JMSConsumer.USERNAME, JMSConsumer.PASSWORD,
JMSConsumer.BROKEURL);
try {
// 通过连接工厂获取连接
connection = connectionFactory.createConnection();
// 启动连接
connection.start();
// 创建session
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 创建一个连接Jack的消息队列
destination = session.createQueue(JMSConsumer.QUENENAME);
// 创建消息消费者
messageConsumer = session.createConsumer(destination);
} catch (JMSException e) {
System.out.println("创建连接异常");
}
}
// 消费消息
public static void consume() {
try {
while (true) {
TextMessage textMessage = (TextMessage) messageConsumer.receive();
if (textMessage != null) {
System.out.println(textMessage.getText());
} else {
break;
}
}
} catch (JMSException e) {
System.out.println("消息接收异常");
}
}
}
3、测试
package com.demo.helloworld;
import org.junit.Test;
public class JMSTest {
@Test
public void testProducer() {
JMSProducer.sendMessage("我发送消息了哦");
}
@Test
public void testConsumer() {
JMSConsumer.consume();
}
}