RabbitMQ环境搭建和Spring Boot集成
1. 安装 Erlang
RabbitMQ 需要 Erlang 运行环境。首先,我们需要安装它。为此,你可能需要添加 EPEL 仓库,因为 Erlang 可能不在默认的仓库中。
sudo yum install epel-release -y
sudo yum install erlang -y
2. 导入 RabbitMQ 官方仓库和安装
sudo rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
3. 创建 RabbitMQ YUM 仓库
编辑 /etc/yum.repos.d/rabbitmq.repo
文件并添加以下内容:
[rabbitmq-server]
name=rabbitmq-server
baseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/7/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
sudo yum update -y
4. 查看可用的 RabbitMQ 版本和安装
sudo yum --showduplicates list rabbitmq-server
sudo yum install rabbitmq-server-3.8.28-1.el7 #当前我的Erlang版本是Erlang 22
sudo systemctl start rabbitmq-server
sudo systemctl enable rabbitmq-server
注意: Erlang/OTP 是一个包括多个应用的大集合。当我们提到 “Erlang 的版本” 通常是指的 Erlang/OTP 的版本。例如,Erlang/OTP 22 就是我们说的 Erlang 22。而当你使用
erl -version
命令时,你实际上查看的是 Erlang BEAM 虚拟机的版本。
5. RabbitMQ 用户管理
默认的 guest
用户仅在 localhost 上有权限。为了允许从外部 IP 连接,下面列举两种方法:
-
更改 RabbitMQ 配置: 可以修改 RabbitMQ 的配置以允许 guest 用户从任何 IP 进行访问,但不推荐这样做因为可能导致安全风险。
-
创建新用户:
rabbitmqctl add_user newuser newpassword rabbitmqctl set_permissions -p / newuser ".*" ".*" ".*"
在应用配置中更新连接信息:
spring.rabbitmq.username=newuser spring.rabbitmq.password=newpassword
6. Spring Boot 配置
如果在 Spring Boot 1.4 或更高版本中遇到 RestTemplate
的自动装配问题,可以使用 RestTemplateBuilder
来创建和配置 RestTemplate
bean。
引入依赖
确保 pom.xml 中有以下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
定义 RestTemplate Bean
@Configuration
public class AppConfig {
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
return builder.build();
}
}
使用上述配置,就可以在任何 Spring 组件中自动装配并使用 RestTemplate
了。
7. 消息的交互
本地的 Spring Boot 应用和云端的 Spring Boot 应用可以通过 RabbitMQ 实例进行交互。基本思路是:一个应用作为消息的生产者将消息发送到 RabbitMQ,而另一个应用作为消费者从 RabbitMQ 接收消息。