1. 程式人生 > >在Spring boot中自定義RabbitMQ的messageConverter

在Spring boot中自定義RabbitMQ的messageConverter

@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); }