五种模式之RabbitMQ与SpringBoot进行整合
application.properties
spring.application.name=rabbitmq-springboot
spring.rabbitmq.host=10.15.0.9
spring.rabbitmq.port=5672
spring.rabbitmq.username=ems
spring.rabbitmq.password=123
spring.rabbitmq.virtual-host=/ems
#RabbitTemplate 用来简化操作
五种模式的测试类
@SpringBootTest(classes = RabbitmqSpringbootApplication.class)
@RunWith(SpringRunner.class)
public class TestRabbitMQ {
@Autowired
private RabbitTemplate rabbitTemplate;
@Test
public void testHelloWorld(){
rabbitTemplate.convertAndSend("hello","hello world模型");
}
@Test
public void testWork(){
for(int i=0;i<10;i++){
rabbitTemplate.convertAndSend("work","work模型"+i);
}
}
@Test
public void testFanout(){
rabbitTemplate.convertAndSend("logs","","Fanout模型发送的消息");
}
@Test
public void testRoute(){
rabbitTemplate.convertAndSend("directs","info","发送info的key的路由信息");
}
@Test
public void testTopic(){
rabbitTemplate.convertAndSend("topics","user.save","user.save路由信息");
}
}
HelloConsumer
@Component
@RabbitListener(queuesToDeclare = @Queue(value= "hello",durable = "true",autoDelete = "true"))
public class HelloConsumer {
@RabbitHandler
public void receive1(String message) {
System.out.println("message = " + message);
}
}
WorkConsumer
@Component
public class WorkConsumer {
@RabbitListener(queuesToDeclare = @Queue("work"))
public void receive1(String message) {
System.out.println("message1=" + message);
}
@RabbitListener(queuesToDeclare = @Queue("work"))
public void receive2(String message) {
System.out.println("message2=" + message);
}
}
RouteConsumer
@Component
public class RouteConsumer {
@RabbitListener(bindings = {
@QueueBinding(
value = @Queue,
exchange = @Exchange(value = "directs", type = "direct"),
key = {
"info", "error", "warning"}
)
})
public void recrive1(String message) {
System.out.println("message1=" + message);
}
@RabbitListener(bindings = {
@QueueBinding(
value = @Queue,
exchange = @Exchange(value = "directs", type = "direct"),
key = {
"error"}
)
})
public void recrive2(String message) {
System.out.println("message2=" + message);
}
}
FanoutConsumer
@Component
public class FanoutConsumer {
@RabbitListener(bindings = {
@QueueBinding(
value = @Queue,
exchange = @Exchange(value = "logs", type = "fanout")
)})
public void receive1(String message) {
System.out.println("message1 =" + message);
}
@RabbitListener(bindings = {
@QueueBinding(
value = @Queue,
exchange = @Exchange(value = "logs", type = "fanout")
)})
public void receive2(String message) {
System.out.println("message2 =" + message);
}
}
TopicConsumer
@Component
public class TopicConsumer {
@RabbitListener(bindings = {
@QueueBinding(
value = @Queue,
exchange = @Exchange(name = "topics", type = "topic"),
key = {
"user.save", "user.*"}
)
})
public void receive1(String message) {
System.out.println("message1=" + message);
}
@RabbitListener(bindings = {
@QueueBinding(
value = @Queue,
exchange = @Exchange(name = "topics", type = "topic"),
key = {
"order.#", "profuce.#", "user.*"}
)
})
public void receive2(String message) {
System.out.println("message2=" + message);
}
}