java连接ActiveMQ测试

本文详细介绍如何在项目中引入ActiveMQ并使用其5.11.2版本,避免与Spring框架冲突。通过具体示例代码,分别演示了队列(queue)模式和主题(topic)模式下,生产者和消费者的实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

***代码测试前,先在项目中引入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/ (点击进入)

网站特点:

  1. java主要网站的导航目录
  2. 你可以记录自己的博客,并可以控制显示和隐藏,可利于管理啦!!!
  3. 可以添加收藏各个网站的链接!!!
  4. 甚至也可以文章收藏,点赞,关注,查看我的消息等功能哦!!1

看一小点点的截图:

或可一试哦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值