在Spring boot中自定義RabbitMQ的messageConverter
阿新 • • 發佈:2018-12-24
@Configuration public class GlobalConfig { //以下配置RabbitMQ訊息服務 @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);
}