RabbitMQ系列-發送json格式消息


https://my.oschina.net/liuyuantao/blog/1855531

默認情況下RabbitMQ發送的消息是為字節碼,有時我們需要發送JSON格式的消息,則有如下兩種處理方式。

1.手動轉換成json

最簡單發送JSON數據的方式是把對象使用ObjectMapper等JSON工具類把對象轉換為JSON格式,然后發送。如下:

@Autowired
private ObjectMapper objectMapper;

public void sendOrder(Order order) {
    try {
        String orderJson = objectMapper.writeValueAsString(order);
        Message message = MessageBuilder
                            .withBody(orderJson.getBytes())
                            .setContentType(MessageProperties.CONTENT_TYPE_JSON)
                            .build();
        this.rabbitTemplate.convertAndSend(RabbitConfig.QUEUE_ORDERS, message);
    } catch (JsonProcessingException e) {
        e.printStackTrace();
    }
}

但是在每一個發送消息的地方都這樣寫就會很繁瑣。

2.使用MessageConvert自動轉換為json

如果規定了消息的格式為JSON,並使用消息轉換器,則會自動將消息轉化為json格式而不需要每次手動進行轉換。RabbitTemplate默認使用SimpleMessageConverter作為自己的消息轉化器,而SimpleMessageConverter並不能滿足json消息的需求。我們可以使用Jackson2JsonMessageConverter作為默認的消息轉換器。

為RabbitTemplate配置MessageConverter:

@Configuration
public class RabbitConfig {

    @Bean
    public RabbitTemplate rabbitTemplate(final ConnectionFactory connectionFactory) {
        final RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
        rabbitTemplate.setMessageConverter(jsonMessageConverter());
        return rabbitTemplate;
    }

    @Bean
    public Jackson2JsonMessageConverter jsonMessageConverter() {
        return new Jackson2JsonMessageConverter();
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM