项目中有用到ActiveMQ ,这里记一下本地测试的方法:
首先导包:
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.MessageProducer;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
然后使用生产者发送消息:
// tcp 地址
static final String BROKER_URL = "tcp://127.0.0.1:61616";
// 目标,
static final String DESTINATION = "test.mq.jms";
/**
* 发送消息
* @param sess
* @param prod
* @throws Exception
*/
public static void sendMessage(Session sess, MessageProducer prod,String message) throws Exception {
TextMessage text = sess.createTextMessage(message);
prod.send(text);
}
public static void main(String[] args) throws Exception {
Connection conn = null;
Session sess = null;
try {
// 创建链接工厂
ConnectionFactory factory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD, BROKER_URL);
// 通过工厂创建连接
conn = factory.createConnection();
// 启动连接
conn.start();
// 创建session(第一个参数为true时,第二个参数无效)
sess = conn.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
// 创建消息队列
Destination dest = sess.createQueue(DESTINATION);
// 创建消息制作者
MessageProducer prod = sess.createProducer(dest);
// 设置持久化模式(NON_PERSISTENT:不持久/PERSISTENT持久化)
prod.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
sendMessage(sess, prod,"测试消息");
// 提交会话
sess.commit();
} catch (Exception e) {
throw e;
} finally {
// 关闭释放资源
if (sess != null) {
sess.close();
}
if (conn != null) {
conn.close();
}
}
}
通过消费者获取消息:
// tcp 地址
public static final String BROKER_URL = "tcp://127.0.0.1:61616";
// 目标
public static final String DESTINATION = "test.mq.jms";
public static void main(String[] args) throws Exception {
Connection conn = null;
Session sess = null;
try {
// 创建链接工厂
ConnectionFactory factory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD, BROKER_URL);
// 通过工厂创建一个连接
conn = factory.createConnection();
// 启动连接
conn.start();
// 创建一个session会话
sess = conn.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
// 创建一个消息队列
Destination dest = sess.createQueue(DESTINATION);
// 创建消息制作者
MessageConsumer cumer = sess.createConsumer(dest);
while (true) {
// 接收数据
Message message = cumer.receive();
TextMessage text = (TextMessage) message;
if (text != null) {
System.out.println(text.getText());
break;
} else {
break;
}
}
// 提交会话
sess.commit();
} catch (Exception e) {
throw e;
} finally {
// 关闭释放资源
if (sess != null) {
sess.close();
}
if (conn != null) {
conn.close();
}
}
}