使用注解方式实现RabbitMq整合
在进行该部分实验前把之前的交换器和队列删除,在RabbitMq管理后台完成。
1、RabbitMq配置类
@Configuration public class RabbitMQConfig { /** * 定制JSON格式的消息转换器 * @return */ @Bean public MessageConverter messageConverter(){ return new Jackson2JsonMessageConverter(); } //1、定义fanout类型的交换器 @Bean public Exchange fanout_exchange(){ return ExchangeBuilder.fanoutExchange("fanout_exchange").build(); } //2、定义两个不同名称的消息队列 @Bean public Queue fanout_queue_email(){ return new Queue("fanout_queue_email"); } @Bean public Queue fanout_queue_sms(){ return new Queue("fanout_queue_sms"); } //3、将两个不同名称的消息队列跟交换器进行绑定 @Bean public Binding bindingEmail(){ return BindingBuilder.bind(fanout_queue_email()).to(fanout_exchange()).with("").noargs(); } @Bean public Binding bindingSms(){ return BindingBuilder.bind(fanout_queue_sms()).to(fanout_exchange()).with("").noargs(); } }
2、Service类
@Service public class MessageService { @RabbitListener(bindings = @QueueBinding(value = @Queue("fanout_queue_email"), exchange =@Exchange(value = "fanout_exchange",type="fanout"))) public void psubConsumerEmailAno(User user){ System.out.println("邮件业务接收到消息:"+user); } @RabbitListener(bindings = @QueueBinding(value = @Queue("fanout_queue_sms"), exchange =@Exchange(value = "fanout_exchange",type="fanout"))) public void psubConsumerSmsAno(User user){ System.out.println("短信业务接收到消息:"+user); } }
3、在测试类中运行发送消息的方法(注意,在执行测试方法之前需要将服务器类的监听代码注释掉)。
@Test public void publishMag(){ User user=new User(); user.setAge(30); user.setId(10000L); user.setEmail("test@aliyun.com"); user.setUsername("builderMsg"); for(int i=0;i<100;i++){ rabbitTemplate.convertAndSend("fanout_exchange","",user); } System.out.println("消息发送成功!"); }
4、启动工程,观察控制台输出。
SpringBoot---RabbitMQ_2 (使用注解方式)
原文:https://www.cnblogs.com/technicist/p/13654944.html