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 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!