最简单模式一:生产者producer+队列queue+消费者consuner
生产者producer:
//注入发送模板
@Autowired private RabbitTemplate rabbitTemplate;
//生产者发送信息
@PostMapping("rabbimq")
public String rebbimq(@RequestBody User user) {
String msg = "队列进来了。。。";
rabbitTemplate.convertAndSend("simple.queue", msg);
return msg;
}
//队列queue:注册队列
@Configuration
public class RabbitMqConfig {
@Bean
Queue queue() {
return new Queue("simple.queue");
}
}
//因为Java要序列号,或者json格式才能通信传输,所以要转格式;
@Bean
Jackson2JsonMessageConverter jackson2JsonMessageConverter() {
return new Jackson2JsonMessageConverter();
}
消费者consuner
@Service
public class RabbitmqListenerMsg {
@RabbitListener(queues = "simple.queue")
public void handleMsg(String msg) {
System.out.println("处理队列完成:" + msg);
}
}
模式二(工作队列模式):生产者producer+队列queue+消费者consuner
//注入发送模板
@Autowired private RabbitTemplate rabbitTemplate;
//生产者发送信息
@PostMapping("/rabbimqSend")
public Map<String,Object> sendMap(){
Map<String,Object> map = new HashMap<>();
map.put("name","韦锦林");
map.put("age","37");
map.put("addr","贵州");
rabbitTemplate.convertAndSend("work.queue", map);
return map;
}
//队列queue:注册队列
@Configuration
public class RabbitMqConfig {
@Bean
Queue queue() {
return new Queue("simple.queue");
}
//因为Java要序列号,或者json格式才能通信传输,所以要转格式;
@Bean
Jackson2JsonMessageConverter jackson2JsonMessageConverter() {
return new Jackson2JsonMessageConverter();
}
}
消费者consuner
@Service
public class RabbitmqListenerMsg {
@RabbitListener(queues = "work.queue")
public void handleMsg(Map<String,Object> map) {
System.out.println("处理队列完成A消费:" + map);
}
@RabbitListener(queues = "work.queue")
public void handleMsgB(Map<String,Object> map) {
System.out.println("处理队列完成B消费:" + map);
}
}
模式三(路由队列模式):生产者producer+队列queue+交换机exchange+消费者consuner
//注入发送模板
@Autowired private RabbitTemplate rabbitTemplate;
//生产者发送信息
@PostMapping("/rabbimqSend")
public Map<String,Object> sendMap(){
Map<String,Object> map = new HashMap<>();
map.put("name","韦锦林");
map.put("age","37");
map.put("addr","贵州");
rabbitTemplate.convertAndSend("work.queue", map);
return map;
}
//队列queue:注册队列
@Configuration
public class RabbitMqConfig {
@Bean
Queue queue() {
return new Queue("simple.queue");
}
//交换机
@Bean
public Exchange builExchange(){
return ExchangeBuilder.directExchange("route.exchange").durable(true).build();
}
//路由绑定
@Bean
public Binding builBinding(Queue queue,DirectExchange exchange){
return BindingBuilder.bind(queue).to(exchange).withQueueName();
}
//因为Java要序列号,或者json格式才能通信传输,所以要转格式;
@Bean
Jackson2JsonMessageConverter jackson2JsonMessageConverter() {
return new Jackson2JsonMessageConverter();
}
}
消费者consuner
@Service
public class RabbitmqListenerMsg {
@RabbitListener(queues = "work.queue")
public void handleMsg(Map<String,Object> map) {
System.out.println("处理队列完成A消费:" + map);
}
@RabbitListener(queues = "work.queue")
public void handleMsgB(Map<String,Object> map) {
System.out.println("处理队列完成B消费:" + map);
}
}
模式四(主题队列模式):生产者producer+队列queue+交换机exchange+消费者consuner
//注入发送模板
@Autowired private RabbitTemplate rabbitTemplate;
//生产者发送信息
@PostMapping("/rabbimqSend")
public Map<String,Object> sendMap(){
Map<String,Object> map = new HashMap<>();
map.put("name","韦锦林");
map.put("age","37");
map.put("addr","贵州");
//指定队列队列执行:order和log执行,可以加可减
rabbitTemplate.convertAndSend("topic.exchange","order.log", map);
return map;
}
//队列queue:注册队列
@Configuration
public class RabbitMqConfig {
//订单队列
@Bean("order")
Queue queue() {
return new Queue("order.queue");
}
//用户队列
@Bean("user")
Queue queue2() {
return new Queue("user.queue");
}
//日志队列
@Bean("log")
Queue queue3() {
return new Queue("log.queue");
}
//交换机
@Bean
public Exchange builExchange() {
return ExchangeBuilder.topicExchange("topic.exchange").durable(true).build();
}
//路由绑定队列1
@Bean
public Binding builBinding(
@Qualifier("order") Queue queue,
TopicExchange exchange) {
return BindingBuilder.bind(queue).to(exchange).with("#.order.#");
}
//路由绑定队列2
@Bean
public Binding builBinding2(
@Qualifier("user") Queue queue,
TopicExchange exchange) {
return BindingBuilder.bind(queue).to(exchange).with("#.user.#");
}
//路由绑定队列3
@Bean
public Binding builBinding3(
@Qualifier("log") Queue queue,
TopicExchange exchange) {
return BindingBuilder.bind(queue).to(exchange).with("#.log.#");
}
//因为Java要序列号,或者json格式才能通信传输,所以要转格式;
@Bean
Jackson2JsonMessageConverter jackson2JsonMessageConverter() {
return new Jackson2JsonMessageConverter();
}
}
消费者consuner
@Service
public class RabbitmqListenerMsg {
@RabbitListener(queues = "order.queue")
public void handleMsg(Map<String,Object> map) {
System.out.println("处理队列完成_order消费:" + map);
}
@RabbitListener(queues = "user.queue")
public void handleMsg2(Map<String,Object> map) {
System.out.println("处理队列完成_user消费:" + map);
}
@RabbitListener(queues = "log.queue")
public void handleMsg3(Map<String,Object> map) {
System.out.println("处理队列完成_log消费:" + map);
}
}
广播模式五:生产者producer+队列queue+消费者consuner
//注入发送模板
@Autowired private RabbitTemplate rabbitTemplate;
//生产者发送信息
@PostMapping("/rabbimqSend")
public Map<String,Object> sendMap(){
Map<String,Object> map = new HashMap<>();
map.put("name","韦锦林");
map.put("age","37");
map.put("addr","贵州");
//指定队列队列执行
rabbitTemplate.convertAndSend("fanout.exchange","", map);
return map;
}
//队列queue:注册队列
@Configuration
public class RabbitMqConfig {
//订单队列
@Bean("order")
Queue queue() {
return new Queue("order.queue");
}
//用户队列
@Bean("user")
Queue queue2() {
return new Queue("user.queue");
}
//日志队列
@Bean("log")
Queue queue3() {
return new Queue("log.queue");
}
//交换机
@Bean
public Exchange builExchange() {
return ExchangeBuilder.fanoutExchange("fanout.exchange").durable(true).build();
}
//路由绑定队列1
@Bean
public Binding builBinding(
@Qualifier("order") Queue queue,
FanoutExchange exchange) {
return BindingBuilder.bind(queue).to(exchange);
}
//路由绑定队列2
@Bean
public Binding builBinding2(
@Qualifier("user") Queue queue,
FanoutExchange exchange) {
return BindingBuilder.bind(queue).to(exchange);
}
//路由绑定队列3
@Bean
public Binding builBinding3(
@Qualifier("log") Queue queue,
FanoutExchange exchange) {
return BindingBuilder.bind(queue).to(exchange);
}
//因为Java要序列号,或者json格式才能通信传输,所以要转格式;
@Bean
Jackson2JsonMessageConverter jackson2JsonMessageConverter() {
return new Jackson2JsonMessageConverter();
}
}
消费者consuner
@Service
public class RabbitmqListenerMsg {
@RabbitListener(queues = "order.queue")
public void handleMsg(Map<String,Object> map) {
System.out.println("处理队列完成_order消费:" + map);
}
@RabbitListener(queues = "user.queue")
public void handleMsg2(Map<String,Object> map) {
System.out.println("处理队列完成_user消费:" + map);
}
@RabbitListener(queues = "log.queue")
public void handleMsg3(Map<String,Object> map) {
System.out.println("处理队列完成_log消费:" + map);
}
}