@Configurationpublic class GlobalConfig { //以下配置RabbitMQMessage Service @Autowired public ConnectionFactory connectionFactory; @Bean public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory() { SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory(); factory.setConnectionFactory(connectionFactory); factory.setConcurrentConsumers(3); factory.setMaxConcurrentConsumers(10); return factory; } @Bean public MessageConverter jsonMessageConverter() { return new Jackson2JsonMessageConverter(); } @Bean public RabbitTemplate rabbitTemplate() { RabbitTemplate template = new RabbitTemplate(connectionFactory); template.setMessageConverter(jsonMessageConverter()); return template; }}
這樣配置後,就可以通過rabbitTemplate.convertAndSend(createCustomerQueueName, requestWrapper);來自動序列化成json字串了。
RequestWrapper requestWrapper = new RequestWrapper();rabbitTemplate.convertAndSend("queue", requestWrapper);消費的地方是
@RabbitListener(queues = "queue")public void processCreateCustomer(@Payload RequestWrapper requestWrapper, @Header(AmqpHeaders.DELIVERY_TAG) long deliveryTag, Channel channel) throws IOException {// 處理成功channel.basicAck(deliveryTag,false);// 處理失敗channel.basicNack(deliveryTag, false, true);}