***代码测试前,先在项目中引入ActiveMQ的jar包,在pom.xml中添加如下配置:
因为activemq5.11.2不会和spring产生冲突,所以用这个版本较好!
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
<version>5.11.2</version>
</dependency>
一、queue(队列)模式测试
生产者代码:
@Test
public void testQueueProducer() throws Exception{
//建立连接工厂,单例
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.129:61616/");
//建立连接
Connection connection = connectionFactory.createConnection();
//连接开启
connection.start();
//创建一个服务对象session
Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
//创建一个目的地Destination,,即ActiveMQ的接收点
Queue queue = session.createQueue("test-queue");
//创建一个生产者,并将目的地告诉他
MessageProducer producer = session.createProducer(queue);
//创建一个消息
Message message = session.createTextMessage("hello queue message2");
//生产者发送消息
producer.send(message);
//关闭连接
producer.close();
session.close();
connection.close();
}
消费者代码:
@Test
public void testQueueCustomer() throws Exception{
//建立连接工厂,单例
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.129:61616/");
//建立连接
Connection connection = connectionFactory.createConnection();
//连接开启
connection.start();
//创建一个服务对象session
Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
//创建一个目的地Destination,即ActiveMQ的接收点
Queue queue = session.createQueue("test-queue");
//创建一个消费者,并将目的地告诉他
MessageConsumer consumer = session.createConsumer(queue);
//消费者实时监听是否有消息传来,传来后打印出来
consumer.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message message) {
if(message instanceof TextMessage){
TextMessage textMessage = (TextMessage)message;
try {
System.out.println(textMessage.getText());
}catch (Exception e){
e.printStackTrace();
}
}
}
});
//手动关闭实时等待
System.in.read();
//关闭连接
consumer.close();
session.close();
connection.close();
}
二、topic(话题-订阅模式)
生产者代码:
@Test
public void testProducerTopic() throws Exception{
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.129:61616/");
Connection connection = connectionFactory.createConnection();
connection.start();
Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
Topic topic = session.createTopic("test-topic");
MessageProducer producer = session.createProducer(topic);
Message message = session.createTextMessage("hello topic message1");
producer.send(message);
producer.close();
session.close();
connection.close();
消费者代码:
注:将此代码复制n份即n个消费者
@Test
public void testConsumerTopic() throws Exception{
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.129:61616");
Connection connection = connectionFactory.createConnection();
connection.start();
Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
Topic topic = session.createTopic("test-topic");
MessageConsumer consumer = session.createConsumer(topic);
consumer.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message message) {
if(message instanceof TextMessage){
TextMessage textMessage = (TextMessage)message;
try {
System.out.println("the first consumer...");
System.out.println(textMessage.getText());
}catch (Exception e){
e.printStackTrace();
}
}
}
});
System.in.read();
consumer.close();
session.close();
connection.close();
}
三、通过activemq管理后台查看测试结果
queue模式:
topic模式:
======以下于你或许是个好消息======
好消息就是:欢迎访问下面的博客网站哈哈哈......
网站名称:Java学习笔记网 (点击进入)
url:https://www.javaxxbj.com/ (点击进入)
网站特点:
- java主要网站的导航目录
- 你可以记录自己的博客,并可以控制显示和隐藏,可利于管理啦!!!
- 可以添加收藏各个网站的链接!!!
- 甚至也可以文章收藏,点赞,关注,查看我的消息等功能哦!!1
看一小点点的截图:
或可一试哦!