POM文件
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
<version>2.0.6.RELEASE</version>
</dependency>
yml文件
spring:
rabbitmq:
host: 192.168.111.129
username: admin
password: admin
virtual-host: /
provider
配置類
@Configuration
public class EmailConfig {
@Bean
DirectExchange emailExchange(){
return new DirectExchange("EmailExchange");
}
}
生產消息
@RestController
@RequestMapping("amqp")
public class AmqpController {
@Autowired
private RabbitTemplate rabbitTemplate;
@GetMapping("/direct")
public String sendEmail(@RequestParam Map<String,Object> params){
String msg = params.get("msg").toString();
rabbitTemplate.convertAndSend("EmailExchange","EmailRoutingKey",msg);
return "ok";
}
}
consumer
java配置類方式
配置類
@Configuration
public class EmailConfig {
@Bean
public DirectExchange EmailExchange(){
return new DirectExchange("EmailExchange");
}
@Bean
public Queue EmailQueue(){
return new Queue("EmailQueue");
}
@Bean
public Binding BindEmail() {
return BindingBuilder.bind(EmailQueue()).to(EmailExchange()).with("EmailRoutingKey");
}
}
消費消息
@Component
public class EmailReceiver {
private int cout=0;
@RabbitListener(queues = "EmailQueue")
public void receiver(Channel channel, String msg, Message message) throws IOException {
System.out.println("收到消息:"+msg);
}
}
純註解方式
@Component
public class Listener {
@RabbitListener(bindings = @QueueBinding(
value = @Queue(value = "EmailQueue"),
exchange = @Exchange(
value = "EmailExchange",
ignoreDeclarationExceptions = "true",
type = ExchangeTypes.DIRECT
),
key = {"EmailRoutingKey"}))
public void listen(String msg){
System.out.println("接收到消息:" + msg);
}
}