@Configuration
public class RabbitMqConfig {
// Direct Exchange(直连交换机)
@Bean
public DirectExchange directExchange() {
return new DirectExchange("direct.exchange");
}
// Topic Exchange(主题交换机)
@Bean
public TopicExchange topicExchange() {
return new TopicExchange("topic.exchange");
}
// Fanout Exchange(广播交换机)
@Bean
public FanoutExchange fanoutExchange() {
return new FanoutExchange("fanout.exchange");
}
}
五、队列绑定交换机示例
java复制代码
@Configuration
public class RabbitMqConfig {
@Bean
public Queue queue01() {
return QueueBuilder.durable("queue01").build();
}
@Bean
//创建交换机
public DirectExchange exchange01() {
return ExchangeBuilder.directExchange("exchange01").build();
}
@Bean
//绑定交换机和队列
public Binding binding01(DirectExchange exchange, Queue queue) {
return BindingBuilder.bind(queue)
.to(exchange)
.with("yy");
}
}
六、生产与消费消息
简单传递消息
生产者
java复制代码
@Component
public class MessageProducer {
@Autowired
private RabbitTemplate rabbitTemplate;
public void send(String message) {
rabbitTemplate.convertAndSend("myQueue", message);
}
}
消费者
java复制代码
@Component
public class MessageConsumer {
@RabbitListener(queues = "myQueue")
public void receive(String message) {
System.out.println("Received: " + message);
}
}
能够传对象
生产者
java复制代码
@RestController
@RequestMapping("/mq")
public class MessageProducer {
@Autowired
private RabbitTemplate rabbitTemplate;
private Integer id=0;
@GetMapping("/send")
public String send() {
id++;
UserGoods userGoods = new UserGoods(1001,id);
rabbitTemplate.convertAndSend("queue01", userGoods);
return "发送成功";
}
}