目录

RabbitMQ 和 Spring Boot 的集成

前言

在最近的项目中使用了 RabbitMQ。 主要是用来起到一个消峰作用。

安装

安装这里分为 windowslinux

我主要的开发环境是在 windows 10 上, 运行环境是 linux(ubuntu),所以讲解主要从两个系统来说。

windows

RabbitMQerlang 开发的,所以使用之前首先要下载 erlang 选择 windows 64bit 或者 windows 32bit 根据自己电脑进行选择,下载。

下载后进行安装 将 erl 的安装目录下载的 bin 写入环境变量中。 如图所示:

https://island-hexo.oss-cn-beijing.aliyuncs.com/erl.png

cmd/powershell 中输入 erl 会出现 erl 的一些版本信息。

https://island-hexo.oss-cn-beijing.aliyuncs.com/erlcmd.png

这样基本完成了 erlang 的安装。

安装完 erlang 那么就应该安装我们的主角 RabbitMQ

首先下载 RabbitMQ ,在下载页面 下载对应的安装包 exe 文件。

下载完成之后进行安装

安装完成之后就是我们的 RabbitMQ 就可以进行启动了。

运行

linux

这里使用的是 ubuntu 16.04 STL 发行版。

首先要安装 erlang 的相关环境

sudo apt-get install erlang

当安装完成之后在控制台输入 erl ,会有erl的版本信息。

此时的 erl 就算安装成功了。

安装完成之后我们就可以开始安装 RabbitMQ 了。

在终端中输入

sudo apt-get install rabbitmq-service

此时的 rabbitmq 就算安装成功了。

我们需要安装一些插件。

sudo rabbitmq-plugins enable rabbitmq_management

就可以完成插件的安装

http://7xt81u.com1.z0.glb.clouddn.com/linux%20rabbitmq.png

当我们通过浏览器访问的时候

https://island-hexo.oss-cn-beijing.aliyuncs.com/rabbitmqweb.png

此时的默认账户是无法登录的,因为默认 guest 是只能通过本地访问。所以我们要新建一个账户用来可以远程访问。

1
2
3
rabbitmqctl add_user admin admin # 新建一个叫admin账户和密码为admin
rabbitmqctl set_user_tags admin administrator # 为admin账户设为administrator用户
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*" # 为账户写入权限

与SpringBoot整合

基本的安装如上所示,下面将会将如何与 SpringBoot 整合

说明: 项目采用 .yml 格式文件作为 application 配置文件,采用 Gradle 作为构建工具,语言采用 kotlin

配置文件

首先我们对项目添加依赖。

1
2
3
4
5
dependencies {
   	//……
    // mq
    compile('org.springframework.boot:spring-boot-starter-amqp')
}

application.yml 进行配置

1
2
3
4
5
6
spring:
  rabbitmq:
    host: localhost
    port: 5672
    username: admin
    password: admin

在代码中进行配置

我们新建一个类用来配置 RabbitMQ

在代码中新建了一个队列叫做 dc_check,当我们启动服务的时候就可以在 RabbitMQ 的控制台上看到这个队列

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
package com.nuc.evaluate.config

import org.springframework.amqp.core.Queue
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration

/**
 * @author 杨晓辉 2018/2/6 16:07
 */
@Configuration
class RabbitConfig {

    @Bean
    fun checkAns(): Queue {
        return Queue("dc_check")
    }
}

这样我们基本完成了配置。