导航页:https://blog.csdn.net/baokx/article/details/100745165
1.新建maven工程,增加依赖
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
<version>5.15.9</version>
</dependency>
2.新建消息生产者
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
/**
* @author kexiang.bao
* @create 2019-09-11 19:28
*/
public class JmsProducer {
private static final String ACTIVE_URL = "tcp://192.168.207.128:61616";
private static final String QUEUE_NAME = "queue_01";
public static void main(String[] args) throws JMSException {
//1.创建连接工厂,采用默认的用户名和密码
ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(ACTIVE_URL);
//2.获取连接并启动访问
Connection connection = activeMQConnectionFactory.createConnection();
connection.start();
//3.创建session(参数:事务、签收)
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//4.创建目的地(具体是队列还是主题)
Queue queue = session.createQueue(QUEUE_NAME);
//5.创建消息的生产者
MessageProducer messageProducer = session.createProducer(queue);
//6.使用messageProducer发送消息至队列
for (int i = 1; i <= 3; i++) {
//7.创建消息
TextMessage textMessage = session.createTextMessage("message-"+i);
//8.发送消息
messageProducer.send(textMessage);
}
//9.关闭资源
messageProducer.close();
session.close();
connection.close();
System.out.println("消息发送成功");
}
}
运行结果:
虽然消息发送成功,但是又slf4j的警告,看着不爽,通过添加依赖消除之,具体原因参照https://www.cnblogs.com/justlove/p/7637681.html
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-nop</artifactId>
<version>1.7.2</version>
</dependency>
消息发送成功后在控制台中查看
可见消息已成功发送至队列。
接下来新建消费者:
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
/**
* @author kexiang.bao
* @create 2019-09-17 22:41
*/
public class JmsConsumer {
private static final String ACTIVE_URL = "tcp://192.168.207.128:61616";
private static final String QUEUE_NAME = "queue_01";
public static void main(String[] args) throws JMSException {
//1.创建连接工厂,采用默认的用户名和密码
ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(ACTIVE_URL);
//2.获取连接并启动访问
Connection connection = activeMQConnectionFactory.createConnection();
connection.start();
//3.创建session(参数:事务、签收)
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//4.创建目的地(具体是队列还是主题)
Queue queue = session.createQueue(QUEUE_NAME);
//5.创建消费者
MessageConsumer messageConsumer = session.createConsumer(queue);
while (true) {
// TextMessage textMessage = (TextMessage)messageConsumer.receive(5000L); //只等待5s
TextMessage textMessage = (TextMessage)messageConsumer.receive(); //阻塞等待
if(textMessage != null){
String messageText = textMessage.getText();
System.out.println("接收到消息:"+messageText);
}else{
break;
}
}
messageConsumer.close();
session.close();
connection.close();
}
}
运行
控制台显示:
消息已经被成功消费。
注意:当消费者使用recive()时,消费者一直在线,则下面的数字一直为1。