您当前的位置: 首页 >  I.T10001 rabbitmq

springboot整合RabbitMq实现direct交换机(2)

I.T10001 发布时间:2021-08-06 10:00:59 ,浏览量:3

1、pom依赖

 2、yml配置文件

 3、属性配置类

@Component
public class DirectExchangeConfig {

   /**
    * 短信队列
    */
   public static final String DIRECT_SMS_QUEUE="direct_sms_queue";

   /**
    * 邮件队列
    */
   public static final String DIRECT_EMAIL_QUEUE="direct_email_queue";

   /**
    * direct
    */
   public static final String DIRECT_EXCHANGE="direct_exchange";

   /**
    * 短信队列
    * @return
    */
   @Bean
   public Queue directSmsQueue(){
      return new Queue(DIRECT_SMS_QUEUE);
   }

   /**
    * 邮件队列
    * @return
    */
   @Bean
   public Queue directEmailQueue(){
      return new Queue(DIRECT_EMAIL_QUEUE);
   }

   /**
    * direct交换机
    * @return
    */
   @Bean
   public DirectExchange directExchange(){
      return new DirectExchange(DIRECT_EXCHANGE);
   }

   /**
    * 绑定短信列队到交换机
    * @param directSmsQueue
    * @param directExchange
    * @return
    */
   @Bean
   public Binding bindingSmsDirectQueue(Queue directSmsQueue,DirectExchange directExchange){
      return BindingBuilder.bind(directSmsQueue).to(directExchange).with("sms");
   }

   /**
    * 绑定邮件列队到交换机
    * @param directEmailQueue
    * @param directExchange
    * @return
    */
   @Bean
   public Binding bindingEmailDirectQueue(Queue directEmailQueue,DirectExchange directExchange){
      return BindingBuilder.bind(directEmailQueue).to(directExchange).with("email");
   }

}

4、生产者

@Service
@Slf4j
public class ProductDirectService {

   @Autowired
   private AmqpTemplate rabbitTemplate;

   @Autowired
   private DirectExchangeConfig directExchangeConfig;

   public void send(String routingKey) {
      JSONObject jsonObject=new JSONObject();
      jsonObject.put("code","1000");
      jsonObject.put("name","测试");
      jsonObject.put("msg","这是一条Direct测试消息");
      jsonObject.put("date",new Date());
      jsonObject.put("routingKey",routingKey);
      log.info("【direct生产者 】 " + jsonObject.toJSONString());
      this.rabbitTemplate.convertAndSend(directExchangeConfig.DIRECT_EXCHANGE,routingKey,jsonObject.toJSONString());
   }
}

5、短信消费者

@Service
@Slf4j
@RabbitListener(queues = "direct_sms_queue")
public class SmsConsumerDirectService {

   @RabbitHandler
   public void receiver(String msg) {
      log.info("【短信消费者】"+msg);
   }
}

6、邮件消费者

@Service
@Slf4j
@RabbitListener(queues = "direct_email_queue")
public class EmailConsumerDirectService {

   @RabbitHandler
   public void receiver(String msg) {
      log.info("【邮件消费者】"+msg);
   }
}

7、测试类

@Api(tags = "RabbitMq::测试")
@RestController
@RequestMapping("/rabbitmq")
public class RabbitMqController {

   @Autowired
   private ProductDirectService productDirectService;

@ApiOperation("direct交换机")
@PostMapping("/direct")
public RespVo direct(@Valid @RequestBody RoutingKeyReqVo reqVo){
   productDirectService.send(reqVo.getRoutingKey());
   return RespVo.success();
}
}

8、swagger测试

 

关注
打赏
1688896170
查看更多评论

I.T10001

暂无认证

  • 3浏览

    0关注

    154博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0532s