RabbitMQ 其中三种模式的测试
Connection 连接TCP/IP 一个应用一般只会 RabbitMQ 连接一个
Channel 寄生在 Connection 和 Exchange 消息队列相关
一个Channel对应着一个消息队列
Connection一般只有一个
多个消费者,消费同一个消息队列
非常有规律的轮流消费生产者发布的信息(Ribbon轮询机制)
多个消费者,同时消费一个 Rounting key ,但队列
不同
多个消费者都可以获取到消息,不会产生轮询
生产者只要生产一次,可以通过相同的 Rounting key,不同消息队列名称都可以消费这条消息
1、Topic
Producer 生产者:
——config:
注册 topic 交换机
@Configuration
public class TopicConfig {
@Bean
TopicExchange topicExchange() {
return new TopicExchange("topic-exchange");
}
}
——controller:
@RestController
@RequestMapping("/topic")
public class TopicController {
@Autowired
RabbitTemplate rabbitTemplate;
@RequestMapping("/gc/lang")
public String sendgclang(String msg) {
rabbitTemplate.convertAndSend("topic-exchange","gc.lang",msg);
return "/gc.lang 发送" + msg;
}
@RequestMapping("/gc/lang/java")
public String sendLangJava(String msg) {
rabbitTemplate.convertAndSend("topic-exchange","gc.lang.java",msg);
return "/gc/lang/java 发送" + msg;
}
@RequestMapping("/gc/lang/sql")
public String sendLangsql(String msg) {
rabbitTemplate.convertAndSend("topic-exchange","gc.lang.sql",msg);
return "/gc/lang/sql 发送" + msg;
}
@RequestMapping("/gc/lang/http")
public String sendLanghttp(String msg) {
rabbitTemplate.convertAndSend("topic-exchange","gc.lang.http",msg);
return "/gc/lang/