https://blog.csdn.net/mr_haixin/article/details/80418204 —已测试OK
注意:Apache ActiveMQ 各个版本所依赖的JDK版本https://blog.csdn.net/yanfeipei/article/details/75267384
附录一段代码
package com.wkcto.crm.utils;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnectionFactory;
public class ActivemqQueue {
/**
* @param args 接收信息方
*@param
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
receive();
}
private static void receive() {
MessageConsumer consumer =null;
Session session=null;
Connection connection=null;
try {
//1.根据Broker地址创建连接工厂对象
ConnectionFactory connectionFactory=new ActiveMQConnectionFactory("tcp://localhost:61616");
//2.创建连接对象
connection=connectionFactory.createConnection();
connection.start();//接收消息前前必须要start否则无法读取消息,线程会阻塞在receive()方法上
//3.创建Session回话对象,
// 参数1为是否使用事务性的消息 false表示不使用事务 true表示使用事务
//参数2表示消息的确认机制,会影响消息的接收方法而不会影响发送方法Session.AUTO_ACKNOWLEDGE表示自动确认
session=connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
//4.创建一个目的地对象,createQueue创建一个基于点对点的目的地对象,参数为目的地名称,需要与发送时对应
Destination destination=session.createQueue("myQueue");
//5.创建消息的接收者 ,并设定从哪里获取消息
consumer =session.createConsumer(destination);
//6从消息服务中读取消息(receive是同步获取消息的)
Message message= consumer.receive();
//获取消息的具体内容
if(message instanceof TextMessage){
System.out.println(((TextMessage) message).getText());
}
} catch (JMSException e) {
e.printStackTrace();
}finally {
if(consumer!=null){
try {
consumer.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
if(session!=null){
try {
session.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
if(connection!=null){
try {
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
}
}
package com.wkcto.crm.utils;
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.ActiveMQConnectionFactory;
public class ActivemqQueue2 {
/**
* @param args 发送信息方
*@param
*/
public static void main(String[] args) {
send();
}
private static void send() {
MessageProducer producer=null;
Session session= null;
Connection connection=null;
try {
//1.根据Broker地址创建连接工厂对象
ConnectionFactory connectionFactory=new ActiveMQConnectionFactory("tcp://localhost:61616");
//2.创建连接对象
connection=connectionFactory.createConnection();
//3.创建Session回话对象,
// 参数1为是否使用事务性的消息 false表示不使用事务 true表示使用事务
//参数2表示消息的确认机制,会影响消息的接收方法而不会影响发送方法Session.AUTO_ACKNOWLEDGE表示自动确认
session=connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
//4.创建一个目的地对象,createQueue创建一个基于点对点的目的地对象,参数为目的地名称,需要与接收时对应
Destination destination=session.createQueue("myQueue");
//5.创建一个文本类型的消息,并设定消息的数据内容
TextMessage message=session.createTextMessage();
//6.创建消息的发送者 ,并设定消息的发送位置
producer=session.createProducer(destination);
//7.发送消息到指定的目的地
for(long i=0;;i++){
message.setText("queue的测试"+i);
producer.send(message);
}
// System.out.println(“消息发送成功”);
} catch (JMSException e) {
e.printStackTrace();
}finally {
if(producer!=null){
try {
producer.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
if(session!=null){
try {
session.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
if(connection!=null){
try {
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
}
}