rabbitmq rabbitmq模式 Direct模式相当于一对一模式,一个消息被发送者发送后,会被转发到一个绑定的消息队列中,然后被一个接收者接收!
  topic和direct的区别,没有什么大的区别,就是binding key和routing key的匹配方式可以通过通配符的方式,也就是说路由模式是topic模式的一个特例。
  Fanout Exchange形式又叫广播形式,因此我们发送到路由器的消息会使得绑定到该路由器的每一个Queue接收到消息,这个时候就算指定了Key,或者规则(即convertAndSend方法的参数2),也会被忽略!
  依赖 <dependency>      <groupId>org.springframework.boot</groupId>      <artifactId>spring-boot-starter-amqp</artifactId> </dependency>
  流程 application.yml配置文件 spring:   rabbitmq:     host: rabbitmq.qfjava.cn     port: 8800     virtual-host: /test     username: nore     password: 2090
  MassageLisrener 消息监听器 import org.springframework.amqp.rabbit.annotation.RabbitHandler; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.stereotype.Component;
  @Component @RabbitListener(queues = "jla") //声明当前类是用于接收指定队列消息的,必须在方法上面添加RabbitHandler注解 public class MessageListener {     @RabbitListener(queues = "jla",autoStartup = "true")//指定当前方法是用于处理哪个队列的消息的,不需要在类上面添加注解     public void laowangkaishiyuehuileyebuzhidaohuiquyueshui(String message) {         System.err.println("收到了消息====>" + message);     }
      @RabbitHandler //需要在类上面添加@RabbitListener(queues = "shenmemingzi")     public void laowangyouyueleyigeren(String message) {         System.err.println("handler收到的消息" + message);     } }
  RabbitMQConfig 配置文件
  import org.springframework.amqp.core.*; import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; import org.springframework.amqp.rabbit.connection.ConnectionFactory; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean;
  @SpringBootApplication public class RabbitMQConfig {     @Bean     public Queue queue1() {         return new Queue("jla");     } //    @Bean //    public Queue queue2() { //        return new Queue("shenmemingzi2"); //    }     @Bean     public ConnectionFactory connectionFactory() {         CachingConnectionFactory cachingConnectionFactory = new CachingConnectionFactory();         cachingConnectionFactory.setHost("baseservice.qfjava.cn");         cachingConnectionFactory.setPort(8800);         cachingConnectionFactory.setUsername("nore");         cachingConnectionFactory.setPassword("2090");         cachingConnectionFactory.setVirtualHost("/test");         return cachingConnectionFactory;     }
      @Bean     public FanoutExchange fanoutExchange() {         return new FanoutExchange("springbootfanout");     }
      @Bean     public Binding bindFanout(FanoutExchange exchange, Queue queue) {         return BindingBuilder.bind(queue).to(exchange);//绑定指定队列到指定的交换机     }
      @Bean     public DirectExchange directExchange() {         return new DirectExchange("springbootdirect");     }
 
      @Bean     public Binding bindDirect(DirectExchange exchange, Queue queue) {         return BindingBuilder.bind(queue).to(exchange).with("chifan");//绑定并且指定key     }
 
  //    @Bean //    public Binding bindDirect2(DirectExchange exchange, Queue queue) { //        return BindingBuilder.bind(queue).to(exchange).with("chifan2");//绑定并且指定key //    }
      @Bean     public TopicExchange topicExchange() {         return new TopicExchange("springboottopic");     }
      @Bean     public Binding bindTopic(TopicExchange exchange, Queue queue) {         return BindingBuilder.bind(queue).to(exchange).with("*.chifan");     }
  }
  Sender 发送消息 import org.springframework.amqp.core.AmqpTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component;
  @Component public class Sender {     @Autowired     private AmqpTemplate template;
      public void sendMessage(String queue, String message) {         template.convertAndSend(queue,message);     } }
  TestMain 启动测试 import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext;
  public class TestMain {     public static void main(String[] args) {         ApplicationContext context = new AnnotationConfigApplicationContext(RabbitMQConfig.class);         Sender sender= context.getBean(Sender.class);         sender.sendMessage("jla", "一起吃饭去");
      } } | 
 
 
 
 
 
 |