à悟空学院:https://t.cn/Rg3fKJD
学院中有Spring Boot相关的课程!点击「阅读原文」进行查看!
SpringBoot视频:http://t.cn/A6ZagYTi
Spring Cloud视频:http://t.cn/A6ZagxSR
SpringBoot Shiro视频:http://t.cn/A6Zag7IV
SpringBoot交流平台:https://t.cn/R3QDhU0
SpringData和JPA视频:http://t.cn/A6Zad1OH
SpringSecurity5.0视频:http://t.cn/A6ZadMBe
Sharding-JDBC分库分表实战:http://t.cn/A6ZarrqS
分布式事务解决方案「手写代码」:http://t.cn/A6ZaBnIr
这一节我们介绍下Spring Boot整合RabbitMQ,对于RabbitMQ这里不过多的介绍,大家可以参考网络上的资源进行安装配置,本节重点是告诉大家如何在Spring Boot中使用RabbitMQ,那么本节分如下几个步骤:
(1) 新建Maven Java Project;
(2) 在pom.xml添加相关依赖;
(3) 编程+测试
(4) 配置信息
接下来看看每个步骤是怎么操作的。
(1) 新建Maven Java Project;
新建一个Maven Java Project项目,取名为spring-boot-rabbitmq
(2) 在pom.xml添加相关依赖;
这里需要加入基本的依赖以及rabbitmq相关的依赖,具体如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.kfit</groupId>
<artifactId>spring-boot-rabbitmq</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>spring-boot-rabbitmq</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- jdk版本号,Angel在这里使用1.8,大家修改为大家本地配置的jdk版本号即可 -->
<java.version>1.8</java.version>
</properties>
<!--
spring boot 父节点依赖,
引入这个之后相关的引入就不需要添加version配置,
spring boot会自动选择最合适的版本进行添加。
-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.3.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<!-- spring boot web支持:mvc,aop... -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
</dependencies>
</project>
(3) 编程+测试
在这里我们为了方便直接在启动类App.java进行编码,先提供代码:
package com.kfit;
import java.util.Date;
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.messaging.handler.annotation.Payload;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
/**
*
* @author Angel --守护天使
* @version v.0.1
* @date 2016年8月23日
*/
@SpringBootApplication
@EnableScheduling//启用任务调度.
@RabbitListener(queues="foo")//启用Rabbit队列监听foo key.
public class App {
//rabbit操作类;
@Autowired
private RabbitTemplate rabbitTemplate;
@Scheduled(fixedDelay=3000)//3s执行1次此方法;
public void send(){
rabbitTemplate.convertAndSend("foo","zhang");
}
@Bean
public Queue fooQueue(){
returnnew Queue("foo");
}
//接收到消息处理.
@RabbitHandler
public void onMessage(@Payload String foo){
System.out.println(" >>> "+new Date() + ": " + foo);
}
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
好了,到这里就可以运行测试了,观察控制台的打印信息:
>>> Tue Aug 23 15:06:54 CST 2016: zhang
>>> Tue Aug 23 15:06:57 CST 2016: zhang
>>> Tue Aug 23 15:07:00 CST 2016: zhang
看到如上信息,恭喜你简单的例子编写成功了。好了,上面的源代码还是有必要进行简单的讲解下。
首先我们需要清除RabbitMQ的话有这么几个角色,消息生产者或者说消息提供者(sender);其次就是消息队列提供存放消息的对方(queue);消息消费者或者说消息接收者(receiver)。知道这些概念之后在看代码就好理解很多了。
我们先看消息提供者:send()方法,这里使用Spring 提供的RabbitTemplate 进行操作消息,调用convertAndSend方法将消息发布到对应的消息频道上,这里也就是使用Queue进行存储;然后我们注意到这个方法不是我们人为执行的方法而是采用定时执行的方式进行3s一次进行发布消息,所以你会看到send方法上有一个注解@Scheduled,那么使用该注解的话,相应的类上上面就需要@EnableScheduling启用注解。
在上面的分析中我们说消息被发布到队列中,所以我们需要创建一个Queue进行存放,这里需要注意Queue的包路径是org.springframework.amqp.core.Queue。
这里我们注入了fooQueue 方法指定队列的名称是foo,那么此队列只会处理key为foo的消息,其它的key不会处理。
最后就是消息的接收者了:这里我们使用了@RabbitHandler定义了一个消息接收者onMessage,其中这个方法名可以随意取名,再者我们需要启用Rabbit监听,所以需要在类上添加@RabbitListener,这样编写完就能按照我们的想法执行了。那么如果我们编写了两个消息接收者的话,可以正常运行嘛,两个接收者都能接收到消息嘛,答案是肯定的,因为我们以上的编码是发布(Pub)/订阅(Sub)消息模型。
很有意思的是,这个方法还可以在简化下,将类上的@RabbitListener直接转移到方法上,去掉@RabbitHandler注解,直接为如下:
//接收到消息处理.
@RabbitListener(queues = "foo")
public void onMessage(@Payload String foo){
System.out.println(" >new>> "+new Date() + ": " + foo);
}
视频&交流平台:
http://study.163.com/course/introduction.htm?courseId=1004329008
http://412887952-qq-com.iteye.com/blog/2321532
(4) 配置信息
在以上的代码你会发现我们根本没有添加什么配置信息,所以spring boot提供了默认的配置,那么我们应该怎么修改配置呢,只需要在application.properties进行配置即可:
# RABBIT (RabbitProperties)
spring.rabbitmq.host= # connection host
spring.rabbitmq.port=# connection port
spring.rabbitmq.addresses= # connection addresses (e.g. myhost:9999,otherhost:1111)
spring.rabbitmq.username= # login user
spring.rabbitmq.password= # login password
spring.rabbitmq.virtualhost=
spring.rabbitmq.dynamic=
这里可以配置主机地址,端口号,用户名密码(默认使用guest/guest)。
相关推荐
《从零开始学Spring Boot》是一本由林祥纤编著的书籍,旨在帮助初学者系统地学习和掌握Spring Boot框架。Spring Boot是Java开发领域的一款流行框架,它简化了Spring应用的初始设置和配置,使得开发者能够快速构建可...
3. 零配置:Spring Boot推崇“约定优于配置”的原则,很多配置都有默认值,极大地减少了繁杂的配置工作。 4. Starter POMs:Spring Boot通过一系列的Starter POMs(父POM)来简化Maven配置,每个Starter POM都对应...
1. 创建第一个 Spring Boot 项目:从零开始创建一个简单的 "Hello, World!" 应用,理解 Maven 或 Gradle 项目的结构。 2. 使用 Spring Boot 的自动配置:探究如何利用自动配置来简化配置文件。 3. 开发 RESTful API...
一套基于时下最新 Java 技术栈 Spring Boot 3 + Vue 3 开发的前后端分离学习型新闻项目,配备保姆级项目开发教程手把手教你从零开始开发上线一个生产级别的 Java 系统。由新闻门户系统、作者后台管理系统、平台后台...
在2017年的SpringBoot视频教程中,你可能会学到如何从零开始搭建Spring Boot项目,理解自动配置的工作原理,如何使用Spring Data JPA进行数据库操作,以及如何利用Actuator进行应用监控。同时,他还可能分享了最佳...
这大大节省了开发者从零开始构建新项目的时间,提高了开发效率。 下面我们将深入探讨Spring Boot的核心特性和主要知识点: 1. **起步依赖(Starter Dependencies)**:Spring Boot通过“起步依赖”管理依赖关系,...
小说项目,配备保姆级教程手把手教你从零开始开发上线一套生产级别的 Java 系统,由小说门户系统、作家后台管理系统、平台后台管理系统等多个子系统构成。包括小说推荐、作品检索、小说排行榜、小说阅读、小说评论...
本教程将深入探讨Spring Boot的核心特性,并逐步引导你从零开始构建一个完整的Spring Boot应用。我们将涵盖以下主要内容: 1. **Spring Boot简介**:首先,我们将了解Spring Boot的基本概念,包括它的设计理念、...
1. 创建微服务应用:从零开始创建一个简单的微服务应用,包括服务注册、服务发现、服务调用等。 2. 配置管理:如何使用Spring Cloud Config进行集中式配置管理。 3. 容错处理:通过Hystrix实现服务容错,防止雪崩...
Spring Boot的特点是零配置、内嵌式服务器、自动配置等。开发者可以通过`application.properties`或`application.yml`文件覆盖默认属性。例如,要修改Spring MVC视图解析的前缀和后缀,可以在配置文件中设置: ```...
【SpringCloud商城项目】是一个基于SpringCloud框架构建的电子商务系统,旨在实现微服务...网盘链接中的资源将提供详细的步骤指导,帮助你从零开始搭建和运行这个项目,加深对SpringCloud的理解,并提升实际开发能力。
4. **实现过程**:步骤分解,展示如何从零开始构建系统。 5. **性能测试与优化**:通过压力测试分析系统性能,并提出优化方案。 6. **项目总结与展望**:回顾项目经验,指出不足,对未来可能的扩展或改进进行预测...
本手册将通过实例演示上述各组件的使用,引导读者从零开始搭建一个完整的 Spring Cloud 微服务架构,包括服务的注册与发现、API 网关的实现、服务间的调用、容错机制、配置管理、消息总线的运用以及日志追踪等。...
这个项目模板可以帮助开发者节省大量的时间,让他们能够专注于业务逻辑的实现,而不是从零开始搭建整个系统架构。 一、SpringBoot简介 SpringBoot是Spring框架的扩展,它简化了Spring应用程序的初始设置和配置。...
本文将深入探讨如何利用SpringBoot技术栈,从零开始构建一个完整的分布式秒杀系统。 一、项目背景与目标 1. 秒杀系统的目标是处理大量用户在同一时间对有限商品的抢购需求,这对系统的性能和并发处理能力提出了极...
《架构探险:从零开始写分布式服务架构》是一本关于分布式系统架构的书籍,它将带你逐步了解从单体应用演进到分布式架构的过程。书中会讨论分布式服务的挑战,如服务发现、负载均衡、容错机制、数据一致性等,并给出...
通过Spring Cloud,开发者可以轻松地在应用程序中实现这些功能,而无需从零开始编写大量代码。 2. **Eureka服务注册与发现** 在FlyCloud项目中,Eureka作为服务注册中心,用于管理各个微服务实例的注册和发现。每...
Spring Cloud并不是从零开始构建一套新的技术栈,而是将市面上已经成熟的、经过实际验证的服务框架进行整合和封装,使得开发者能够使用Spring Boot风格来快速搭建分布式系统。Spring Cloud极大地简化了分布式系统...
novel 是一套基于时下最新 Java 技术栈 Spring Boot 3 + Vue 3 开发的前后端分离学习型小说项目,配备保姆级教程手把手教你从零开始开发上线一套生产级别的 Java 系统,由小说门户系统、作家后台管理系统、平台后台...
- **视频教程**:从零开始讲解 Spring Cloud 各个核心组件的原理与使用方法,结合具体案例进行实操演示。 - **源代码**:提供了完整的项目源码,方便学习者参考和二次开发。 - **资料文档**:包含官方文档、最佳实践...