引入依赖
< dependency> < groupId> org.springframework.boot</ groupId> < artifactId> spring-boot-starter-amqp</ artifactId>
</ dependency>
配置文件
spring : rabbitmq : host : xuewei.worldport : 5672 username : xueweipassword : 123456 virtual-host : /
消息模型之Sample
开发生产者
@Autowired
private RabbitTemplate rabbitTemplate; @Test
public void testHello ( ) { rabbitTemplate. convertAndSend ( "hello" , "hello world" ) ;
}
开发消费者
@Component
@RabbitListener ( queuesToDeclare = @Queue ( "hello" ) )
public class HelloCustomer { @RabbitHandler public 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) ; }
}