两种方法:
方法一:定义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() + ">"); } }