SpringBoot--rabbimq Consumer

两种方法:

方法一:定义listenerContainer来接收

private Logger logger = LoggerFactory.getLogger(AmqpConfig.class);

    public static final String EXCHANGE = "XMGA-GPS-Exchange";
    public static final String ROUTINGKEY = "XMGA.GPS";

    private String QUEUE = "TEST";

    @Bean
    public ConnectionFactory connectionFactory() {
        CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
        connectionFactory.setAddresses("10.50.1.41:5672");
        connectionFactory.setUsername("root");
        connectionFactory.setPassword("root");
        connectionFactory.setVirtualHost("/");
        // 需要显示调用,才能进行消息的回调
        connectionFactory.setPublisherConfirms(true);
        return connectionFactory;
    }

    @Bean
    public DirectExchange directExchange() {
        return new DirectExchange(EXCHANGE);
    }

    @Bean
    public Queue queue() {
        return new Queue(QUEUE,false);//不持久
    }

    @Bean
    public Binding binding() {
        return BindingBuilder.bind(queue()).to(directExchange()).with(ROUTINGKEY);
    }

    @Bean
    public SimpleMessageListenerContainer messageListenerContainer() {
        SimpleMessageListenerContainer container = new SimpleMessageListenerContainer(connectionFactory());
        container.setQueues(queue());
        container.setExposeListenerChannel(true);
        container.setMaxConcurrentConsumers(1);
        container.setConcurrentConsumers(1);
        container.setAcknowledgeMode(AcknowledgeMode.MANUAL);
//        container.setMessageConverter(messageConverter);
//        container.setMessagePropertiesConverter(messagePropertiesConverter);
        container.setMessageListener(new ChannelAwareMessageListener() {
            @Override
            public void onMessage(Message message, Channel channel) throws Exception {

                logger.info("receive message : " + new String(message.getBody()));
//                logger.info("receive message: " + messageConverter.fromMessage(message));
                channel.basicAck(message.getMessageProperties().getDeliveryTag(),false);
            }
        });
        return container;
    }
方法二:用 @RabbitListener

@Bean
   public MappingJackson2MessageConverter jackson2Converter() {
      MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();
      return converter;
   }

   @Bean
   public DefaultMessageHandlerMethodFactory myHandlerMethodFactory() {
      DefaultMessageHandlerMethodFactory factory = new DefaultMessageHandlerMethodFactory();
      factory.setMessageConverter(jackson2Converter());
      return factory;
   }

   @Override
   public void configureRabbitListeners(RabbitListenerEndpointRegistrar registrar) {
      registrar.setMessageHandlerMethodFactory(myHandlerMethodFactory());
   }

   @Autowired
   private Receiver receiver;

}

@Service
class Receiver {
   @RabbitListener(queues = "TEST")
   public void receiveMessage(Person foo) {
      System.out.println("Received Foo<" + foo.getName() + ">");
   }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值