一、前言
RabbitMQ
是實現了AMQP
(高級消息隊列協議)的開源消息中間件,RabbitMQ服務器是用Erlang
(面向併發的編程語言)編寫的。
RabbitMQ官網下載地址:https://www.rabbitmq.com/download.html
Docker部署則執行如下命令即可
# RABBITMQ_DEFAULT_USER:用戶名,RABBITMQ_DEFAULT_PASS:密碼 這裏修改爲自己的即可
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 -v `pwd`/rabbitmq/data:/var/lib/rabbitmq --hostname my-rabbit --restart=always -e RABBITMQ_DEFAULT_VHOST=my_vhost -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin rabbitmq:3-management
溫馨小提示:本文只是簡單的通過
rabbitmq
去發送消息
和接收消息
,適用於新手簡單入門瞭解~
二、SpringBoot 整合 RabbitMQ
1、pom.xml
中引入 rabbitmq
依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
2、application.yml
中配置 rabbitmq
spring:
# RabbitMQ配置
rabbitmq:
host: 127.0.0.1
port: 5672
# 填寫自己安裝rabbitmq時設置的賬號密碼,默認賬號密碼爲`guest`
username: admin
password: admin
virtual-host: my_vhost # 填寫自己的虛擬機名,對應可查看 `127.0.0.1:15672/#/users` 下Admin中的`Can access virtual hosts`信息
3、rabbitmq配置文件 - 配置一個簡單的Queue(消息隊列)
生產者發送消息到隊列,消費者從隊列中獲取消息
@Configuration
public class RabbitConfig {
public static final String QUEUE_KEY = "hello_world";
@Bean
public Queue queue() {
// durable: true 標識開啓消息隊列持久化 (隊列當中的消息在重啓rabbitmq服務的時候還會存在)
return new Queue(QUEUE_KEY, true);
}
}
4、生產者 - 發送消息
@Slf4j
@Component
public class MsgSender {
@Autowired
private AmqpTemplate rabbitTemplate;
public void send() {
String msgContent = "Hello World ~";
log.info("生產者發送消息 : " + msgContent);
this.rabbitTemplate.convertAndSend(RabbitConfig.QUEUE_KEY, msgContent);
}
}
5、消費者 - 接收消息
@Slf4j
@Component
@RabbitListener(queues = RabbitConfig.QUEUE_KEY)
public class MsgReceiver {
@RabbitHandler
public void process(String msg) {
log.info("消費者接收消息 : " + msg);
}
}
6、測試
@RestController
public class RabbitController {
@Autowired
private MsgSender msgSender;
@GetMapping(value = "/sendMsg", produces = "application/json;charset=utf-8")
@ApiOperation(value = "發送消息", httpMethod = "GET", response = ApiResult.class)
public ApiResult sendMsg() {
msgSender.send();
return ApiResult.ok();
}
}