Spring Boot 集成 RabbitMQ

1. Spring Boot 集成 RabbitMQ

1.1. 版本说明

构件 版本
spring-boot 2.7.18
spring-boot-starter-amqp 2.7.18

1.2. Spring 配置

spring:
application:
name: spring-rabbit-demo
rabbitmq:
addresses: 127.0.0.1:5672
username: admin
password: admin
virtual-host: /

1.3. 定义常量

public class RabbitConstants {
public static final String QUEUE = "spring-rabbit-demo-queue";
public static final String EXCHANGE = "spring-rabbit-demo-exchange";
}

1.4. 配置交换机和队列

@Configuration
@Slf4j
public class RabbitConfiguration {
@Bean
public Queue queue() {
return QueueBuilder.durable(QUEUE).build();
}
@Bean
public FanoutExchange exchange() {
return ExchangeBuilder.fanoutExchange(EXCHANGE).durable(true).build();
}
@Bean
public Binding binding() {
return BindingBuilder.bind(queue()).to(exchange());
}
}

1.5. 测试

@Component
@Slf4j
public class SpringRabbitDemo implements ApplicationRunner {
@Resource
private RabbitTemplate rabbitTemplate;
@Override
public void run(ApplicationArguments args) throws Exception {
String payload = "hello, queue";
rabbitTemplate.convertAndSend(EXCHANGE, null, payload);
log.info("send a message, exchange: {}, payload: {}", EXCHANGE, payload);
}
@RabbitListener(queues = {RabbitConstants.QUEUE})
public void listen(Message<String> message) {
log.info(
"received a message, queue: {}, exchange: {}, payload: {}",
message.getHeaders().get(CONSUMER_QUEUE),
message.getHeaders().get(RECEIVED_EXCHANGE),
message.getPayload()
);
}
}

启动程序,控制台将输出:

send a message, exchange: spring-rabbit-demo-exchange, payload: hello, queue
received a message, queue: spring-rabbit-demo-queue, exchange: spring-rabbit-demo-exchange, payload: hello, queue
posted @   Jason207010  阅读(204)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示