为了方便,采用 Docker
进行安装,直接从仓库拉取即可(首先要在 Liunx 中安装 Docker 环境)。命令如下:
1、查找 rabbitmq 镜像
docker search rabbitmq:management
2、拉取 rabbitmq 镜像
docker pull macintoshplus/rabbitmq-management
3、创建容器并运行
docker run -d --name rbmq -e RABBITMQ_DEFAULT_USER=guest -e RABBITMQ_DEFAULT_PASS=guest -p 15672:15672 -p 5672:5672 c20
4、访问测试:浏览器输入 http://服务器ip:15672
。注意:阿里云防火墙、Linux 端口都要开放,才可访问。
登录成功后,即可看到 rabbitmq 的管理界面。
RabbitMQ 可以很方便地与 SpringBoot 整合。
1、导入 Maven 依赖:
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-amqpartifactId>
dependency>
2、配置文件中指定 rabbitmq 相关参数:
spring:
application:
name: rabbitmq-demo
rabbitmq:
host: 服务器公网ip
port: 5672
username: guest
password: guest
3、写一个配置类,将队列注入到 Spring 容器中,同时定义好队列的名称:
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class QueueConfig {
public static final String QUEUE_NAME = "myQueue";
@Bean
public Queue createQueue() {
return new Queue(QueueConfig.QUEUE_NAME);
}
}
4、消费者处理消息:添加 @RabbitListener
注解并指定要监听的队列名称
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
@Component
public class Consumer {
@RabbitListener(queues = {QueueConfig.QUEUE_NAME})
public void handle(String msg) {
// 消费者处理接收到的消息
System.out.println("消费者处理消息:" + msg);
}
}
5、生产者发送消息:引入 AmqpTemplate
模板类实现整合
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class Provider {
@Autowired
private AmqpTemplate template;
public void send(String msg) {
// 生产者发送消息:队列名称,消息内容
template.convertAndSend(QueueConfig.QUEUE_NAME, msg);
}
}
6、启动 SpringBoot 项目,消费者进入监听状态,查看 rabbitmq 管理界面如下:
还可以查看到我们刚刚定义的队列名称信息:
7、JUnit 进行测试:生产者发送消息
import com.study.rbmq.Provider;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class SpringbootDockerApplicationTests {
@Autowired
private Provider provider;
@Test
void contextLoads() {
provider.send("RabbitMQ入门案例~");
}
}
运行测试程序,在 SpringBoot 程序的控制台中可看到如下结果: