ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

SpringBoot整合RabbitMQ

2026/8/4 8:28:20 拓冰建站 浏览量
SpringBoot整合RabbitMQ

引入依赖

<dependency>  <groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

配置文件

spring:rabbitmq:host: xuewei.worldport: 5672username: xueweipassword: 123456virtual-host: /

消息模型之Sample

开发生产者

@Autowired
private RabbitTemplate rabbitTemplate;@Test
public void testHello(){rabbitTemplate.convertAndSend("hello","hello world");
}

开发消费者

@Component
@RabbitListener(queuesToDeclare = @Queue("hello"))
public class HelloCustomer {@RabbitHandlerpublic void receive1(String message){System.out.println("message = " + message);}
}

消息模型之Work Queues

开发生产者

@Autowired
private RabbitTemplate rabbitTemplate;@Test
public void testWork(){for (int i = 0; i < 10; i++) {rabbitTemplate.convertAndSend("work","hello work!");}
}

开发消费者

@Component
public class WorkCustomer {@RabbitListener(queuesToDeclare = @Queue("work"))public void receive1(String message){System.out.println("work message1 = " + message);}@RabbitListener(queuesToDeclare = @Queue("work"))public void receive2(String message){System.out.println("work message2 = " + message);}
}

消息模型之Publish-Subscribe

开发生产者

@Autowired
private RabbitTemplate rabbitTemplate;@Test
public void testFanout() throws InterruptedException {rabbitTemplate.convertAndSend("logs","","这是日志广播");
}

开发消费者

@Component
public class FanoutCustomer {@RabbitListener(bindings = @QueueBinding(value = @Queue,exchange = @Exchange(name="logs",type = "fanout")))public void receive1(String message){System.out.println("message1 = " + message);}@RabbitListener(bindings = @QueueBinding(value = @Queue, //创建临时队列exchange = @Exchange(name="logs",type = "fanout")  //绑定交换机类型))public void receive2(String message){System.out.println("message2 = " + message);}
}

消息模型之Routing-Direct

开发生产者

@Autowired
private RabbitTemplate rabbitTemplate;@Test
public void testDirect(){rabbitTemplate.convertAndSend("directs","error","error 的日志信息");
}

开发消费者

@Component
public class DirectCustomer {@RabbitListener(bindings ={@QueueBinding(value = @Queue(),key={"info","error"},exchange = @Exchange(type = "direct",name="directs"))})public void receive1(String message){System.out.println("message1 = " + message);}@RabbitListener(bindings ={@QueueBinding(value = @Queue(),key={"error"},exchange = @Exchange(type = "direct",name="directs"))})public void receive2(String message){System.out.println("message2 = " + message);}
}

消息模型之Routing-Topic

开发生产者

@Autowired
private RabbitTemplate rabbitTemplate;@Test
public void testTopic(){rabbitTemplate.convertAndSend("topics","user.save.findAll","user.save.findAll 的消息");
}

开发消费者

@Component
public class TopCustomer {@RabbitListener(bindings = {@QueueBinding(value = @Queue,key = {"user.*"},exchange = @Exchange(type = "topic",name = "topics"))})public void receive1(String message){System.out.println("message1 = " + message);}@RabbitListener(bindings = {@QueueBinding(value = @Queue,key = {"user.#"},exchange = @Exchange(type = "topic",name = "topics"))})public void receive2(String message){System.out.println("message2 = " + message);}
}