欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring应用开发——Spring Boot与ActiveMQ的集成(三)

程序员文章站 2022-05-03 14:41:58
...

   Spring Boot对JMS(Java Message Service,Java消息服务)也提供了自动配置的支持,其主要支持的JMS实现有ActiveMQ,Artemis等。本节中,将以ActiveMQ为例来讲解下Spring Boot与ActiveMQ的集成使用。
一、使用内嵌的ActiveMQ
   在Spring Boot中,已经内置了对ActiveMQ的支持。要在Spring Boot项目中使用ActiveMQ,只需在pom.xml 中添加ActiveMQ的起步一来即可。
1、添加active MQ起步依赖
在项目的pom.xml中添加ActiveMQ的依赖信息,所添加内容如下:
Spring应用开发——Spring Boot与ActiveMQ的集成(三)
添加完spring-boot-starter-activemq依赖后,项目会自动地将ActiveMQ运行所需的jar包加载到项目中,此时就可以在项目中使用AvtiveMQ了。
2、创建消息队列对象
在Application.java中编写一个创建消息队列的方法,其代码如下所示。

}
	@Bean
    public Queue queue() {
       return new ActiveMQQueue("active.queue");
    }
}

Spring应用开发——Spring Boot与ActiveMQ的集成(三)
3、创建消息生产者
创建一个队列消息的控制器类QueueController,并在类中编写发送消息的方法,其代码如下所示:

package com.itheima.springboot.controller;

import javax.jms.Queue;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * 
 * 队列消息控制器
 *
 */
@RestController
public class QueueController {
   @Autowired
   private JmsMessagingTemplate jmsMessagingTemplate;
   @Autowired
   private Queue queue;
   /**
    * 消息生产者
    */
   @RequestMapping("/send")
   public void send()
   {
	   //指定消息发送的目的及内容
	   this.jmsMessagingTemplate.convertAndSend(this.queue,"新发送的信息!");
   }
}

Spring应用开发——Spring Boot与ActiveMQ的集成(三)
在上述代码中,send()方法通过jmsMeaagingTemplate的convertAndSend()方法指定了消息发送的目的地为Queue对象,所发送的内容为“新发送的消息!”。
4、创建消息监听者
创建一个客户控制器类ConstomerController,并在类中编写监听和读取消息的方法,其代码文件如下所示

package com.itheima.springboot.controller;

import org.springframework.jms.annotation.JmsListener;
import org.springframework.web.bind.annotation.RestController;
/**
 * 
 * 客户控制器
 *
 */
@RestController
public class ConstomerController {
	/**
	 *  
	 * 监听和读取信息
	 */
   @JmsListener(destination="active.queue")
   public void readActiveQueue(String message)
   {
	   System.out.println("接收到:"+message);
   }
}

Spring应用开发——Spring Boot与ActiveMQ的集成(三)
在上述代码中,@JmsLinster是Spring4.1所提供的用于监听JMS消息的注解,该注解的属性deStination用于指定要监听的目的地。本案例中监听的是active.queue中的消息。
5、启动项目,测试应用
启动Spring Boot项目,在浏览器输入地址http://localhost:8080/send后,Eclipse的控制台将显示所接受到的消息。
Spring应用开发——Spring Boot与ActiveMQ的集成(三)
二、使用外部的ActiveMQ
1、在实际开发中,ActiveMQ可能是单独部署在其他机器上的,如果要使用它,就需要实现对它的远程调用。需在配置文件中指定AvtiveMQ 的远程主机地址以及服务端口号,其配置大气吗如下:
Spring应用开发——Spring Boot与ActiveMQ的集成(三)
在上述配置中,192.168.10.11是远程主机的IP地址,61616是ActiveMQ的服务端口号。
2、启动远程主机上的ActiveMQ,并通过8161端口号访问ActiveMQ的管理页面,如图所示:
Spring应用开发——Spring Boot与ActiveMQ的集成(三)
3、单击上图Manage ActiveMQ brokerl链接,在弹出窗口中输入默认的用户名和密码admin后将进入ActiveMQ的控制台。单击顶部菜单中的Queues链接,将显示所有队列信息。此时如果启动项目,访问http://localhost:8080/send,并执行数次刷新操作后,ActiveMQ管理页面中的队列显示信息如图所示:
Spring应用开发——Spring Boot与ActiveMQ的集成(三)
从图中可以看出,队列包含1个消费者,并且进入队列的消息和出队列的消息都是6次这说明队列操作正确执行。