Spring Boot学习笔记——Spring Boot与ActiveMQ的集成
Spring Boot对JMS(Java Message Service,Java消息服务)也提供了自动配置的支持,其主要支持的JMS实现有ActiveMQ、Artemis等。这里以ActiveMQ为例。
一、使用内嵌的ActiveMQ
1.添加ActiveMQ起步依赖
在项目的pom.xml中添加ActiveMQ的依赖信息:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
<version>2.0.2.RELEASE</version>
</dependency>
或者:
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-activemq -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
因为我的项目用的就是2.0.2.RELEASE版本,所以可以省略version信息。
添加完spring-boot-starter-activemq依赖后,项目会自动地将ActiveMQ运行所需的JAR包加载到项目中,此时就可以在项目中使用ActiveMQ了。
2.创建消息队列对象
在DemoApplication.java中编写一个创建消息队列的方法:
DemoApplication.java:
package com.zifeiy.demo;
import javax.jms.Queue;
import org.apache.activemq.command.ActiveMQQueue;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
@SpringBootApplication
@EnableCaching
public class DemoApplication {
@Bean
public Queue queue() {
return new ActiveMQQueue("active.queue");
}
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
在上述代码中,@Bean注解用于定义一个Bean。
3.创建消息生产者
创建一个队列消息的控制器类QueueController,并在类中编写发送消息的方法:
QueueController.java:
package com.zifeiy.demo.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, "新发送的消息!");
}
}
在上述代码中,send()方法通过jmsMessageTemplate的convertAndSend()方法指定了消息发送的目的地为Queue对象,所发送的内容为“新发送的消息!”。
4.创建消息监听者
创建一个客户控制器类CustomerController,并在类型编写监听和读取消息的方法:
CustomerController.java:
package com.zifeiy.demo.controller;
import org.springframework.jms.annotation.JmsListener;
import org.springframework.web.bind.annotation.RestController;
/*
* 客户控制器
*/
@RestController
public class CustomerController {
/*
* 监听和读取消息
*/
@JmsListener(destination="active.queue")
public void readActiveQueue(String message) {
System.out.println("接受到:" + message);
}
}
5.启动项目,测试应用
启动Spring Boot项目,在浏览器中输入地址http://localhost:8080/send后,Eclipse控制台将现实接受到的信息如下:
接受到:新发送的消息!
二、使用外部的ActiveMQ
修改配置文件,添加如下:
spring.activemq.broker-url=tcp://192.168.2.100:61616
在上述配置中,192.168.2.100是远程主机的IP地址,61616是ActiveMQ的服务端口号。
可登陆远程主机的8161端口访问ActiveMQ的管理界面。
Spring Boot学习笔记——Spring Boot与ActiveMQ的集成的更多相关文章
- Spring Cloud学习笔记--Spring Boot初次搭建
1. Spring Boot简介 初次接触Spring的时候,我感觉这是一个很难接触的框架,因为其庞杂的配置文件,我最不喜欢的就是xml文件,这种文件的可读性很不好.所以很久以来我的Spring学习都 ...
- Spring Boot学习笔记——Spring Boot与MyBatis的集成(项目示例)
1.准备数据库环境 # 创建数据库 CREATE DATABASE IF NOT EXISTS zifeiydb DEFAULT CHARSET utf8 COLLATE utf8_general_c ...
- Spring Boot学习笔记---Spring Boot 基础及使用idea搭建项目
最近一段时间一直在学习Spring Boot,刚进的一家公司也正好有用到这个技术.虽然一直在学习,但是还没有好好的总结,今天周末先简单总结一下基础知识,等有时间再慢慢学习总结吧. Spring Boo ...
- [Spring入门学习笔记][Spring Boot]
什么是Spring Boot Spring Boot正是在这样的一个背景下被抽象出来的开发框架,它本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速.敏捷地开发新一代基于Spring框架 ...
- Spring Boot学习笔记——Spring Boot与Redis的集成
一.添加Redis缓存 1.添加Redis起步依赖 在pom.xml中添加Spring Boot支持Redis的依赖配置,具体如下: <dependency> <groupId> ...
- [spring入门学习笔记][spring的IoC原理]
什么叫IoC 控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度.其中最常见的方式叫做依赖注入(Dependency ...
- [Spring入门学习笔记][Spring的AOP原理]
AOP是什么? 面向切面编程 软件工程有一个基本原则叫做“关注点分离”(Concern Separation),通俗的理解就是不同的问题交给不同的部分去解决,每部分专注于解决自己的问题.这年头互联网也 ...
- Spring MVC 学习笔记 spring mvc Schema-based configuration
Spring mvc 目前支持5个tag,分别是 mvc:annotation-driven,mvc:interceptors,mvc:view-controller, mvc:resources和m ...
- 1.2(Spring MVC学习笔记) Spring MVC核心类及注解
一.DispatcherServlet DispatcherServlet在程序中充当着前端控制器的作用,使用时只需在web.xml下配置即可. 配置格式如下: <?xml version=&q ...
随机推荐
- js字符串解析与转换成数字
解析允许字符串中含有非法数字字符,解析按从左至右的顺序,如果遇到非数字字符就停止.而转换不允许出现非数字字符,否则会失败并返回NaN
- Maximum Average Subarray II
Description Given an array with positive and negative numbers, find the maximum average subarray whi ...
- [CSS] Change the Alignment of a Single Flexed Item with 'align-self'
Inside of a flexed container, a single item can control its own flex with align-self. The possible v ...
- 自定义的JSP标签
JSP标签 JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签. 除了这 ...
- BigDecimal计算
货币金额的计算 - Java中的BigDecimal 在<Effective Java>这本书中也提到这个原则,float和double只能用来做科学计算或者是工程计算,在商业计算中我 ...
- HTML 001 入门介绍
HTML 教程- (HTML5 标准) 超文本标记语言(英语:HyperText Markup Language,简称:HTML)是一种用于创建网页的标准标记语言. 您可以使用 HTML 来建立自己的 ...
- 学习了武沛齐讲的Day11-完
DAY11 老师讲了很多,理解了一个方法 当有复杂的问题时,先拆解很小的单元(10行),测试通过了,再简化(3行) len range 感悟:其实不用计记代码(主要是记不动),,当遇到问题时:找出 ...
- MySQL 计算时间差函数 TIMESTAMPDIFF、DATEDIFF
一.TIMESTAMPDIFF 支持天.小时.秒等 selet TIMESTAMPDIFF(hour,odl_time,now()); 计算old_time与现在时间的小时差. 二.DATEDIFF ...
- vue报错 :NavigationDuplicated {_name: "NavigationDuplicated", name: "NavigationDuplicated"}
解决的几种办法 https://blog.csdn.net/weixin_43202608/article/details/98884620 这个适合所有vue的UI框架 在main.js下添加一下代 ...
- 数据结构实验之查找五:平方之哈希表 (SDUT 3377)
Hash表的平方探测思路:如果当前这个没存放数值,就放进去,如果当前这个地方Hash [ i ] 已经有数值了,就以平方的间隔左右寻找没有存放数的空白 Hash [ i ]. #include < ...