目录
Springboot整合RabbiMQ
pom
<!--AMQP依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
yml
spring:
application:
name: springboot-rabbitmq
# RabbitMQ
rabbitmq:
host: 172.30.69.170
port: 5672
username: guest
password: guest
virtual-host: /
listener:
simple:
# 消费者最小数量
concurrency: 10
# 消费者最大数量
max-concurrency: 10
# 启动时是否自启动容器,默认true
auto-startup: true
# 限制消费者每次只能处理一条消息,处理完再处理下一条消息
prefetch: 1
# 被拒绝时是否重新进入队列,默认true
default-requeue-rejected: true
template:
retry:
# 发布重试,默认为false
enabled: true
# 重试时间,默认1000ms
initial-interval: 1000ms
# 重试最大次数 3 次
max-attempts: 3
# 重试最大间隔时间 默认10000ms
max-interval: 10000ms
# 重试的时间间隔乘数,每重试一次多乘一遍这个
# 重试的时间间隔乘数。比如2.0 第一次等于10s,第二次等于10s,第三次等于10s
multiplier: 1
server:
port: 8080
config
/**
* RabbitMQ 配置类
*/
@Configuration
@Data
public class RabbitMQConfig {
/**
* 对列
* 对列配置持久化 消息配置持久化 ---- 可以持久化
* 对列不配置持久化 消息配置持久化 ---- 没办法持久化
*/
@Bean
public Queue queue(){
return new Queue("queue", true); //对列名称 queue durable 持久化
}
}
MQSender
/**
* 消息发送者
*/
@Slf4j
@Service
public class MQSender {
@Autowired
private RabbitTemplate rabbitTemplate;
public void send(String msg){
log.info("发送消息[" + msg.toString() + "]给:" + msg);
rabbitTemplate.convertAndSend("queue", msg); //往 queue 对列里面发送 消息 消息 msg
}
}
MQReceiver
/**
* 消息的消费者
*/
@Service
@Slf4j
public class MQReceiver {
/**
* 监听这个对列
*/
@RabbitListener(queues = "queue")
public void receive(Message msg){
log.info("接受消息:" + msg);
}
}
contorller
/**
* @author gh Email:@2495140780qq.com
* @Description
* @date 2022-03-17-下午 5:48
*/
@Controller
public class userController {
@Autowired
private MQSender mqSender;
/**
* 测试 RabbitMQ 消息
*/
@RequestMapping("/mq")
@ResponseBody
public void mq(){
mqSender.send("Hello");
}
}
测试:
链接 所对应的信道
queues
为发送消息
发送消息