Spring AMQP 发送JSON格式的对象及Java 8时间转换成JSON格式

来源:互联网 发布:条码数据采集系统 编辑:程序博客网 时间:2024/05/29 16:18

@RequestBody注解类似,使用AMQP发送消息时如果需要把对象序列化成JSON格式的对象,也需要设置MessageConverter。而在JSON序列化的库中,口碑最好而且更新比较稳定的便是Jackson库,而且添加了对Java 8时间API的支持。

    //以下配置RabbitMQ消息服务    @Bean    public ConnectionFactory rabbitConnectionFactory() {        CachingConnectionFactory connectionFactory = new CachingConnectionFactory("localhost");        connectionFactory.setUsername("guest");        connectionFactory.setPassword("guest");        return connectionFactory;    }    @Bean    public RabbitTemplate rabbitTemplate() {        RabbitTemplate template = new RabbitTemplate(rabbitConnectionFactory());        template.setMessageConverter(jsonMessageConverter());        return template;    }    @Bean    public MessageConverter jsonMessageConverter() {        return new Jackson2JsonMessageConverter();    }

这样还不行,还需要在需要序列化的类的Java 8时间字段上面标注一下Jackson库的注解:

    private static final long serialVersionUID = 548481104;    private Integer       id;    private Integer       userid;    private String        outtradeno;    private String        tradeno;    private Double        amount;    @JsonSerialize(using = LocalDateTimeSerializer.class)    @JsonDeserialize(using = LocalDateTimeDeserializer.class)    private LocalDateTime time;    private Integer       status;    private String        phonenum;    public Baobiaoorder() {}

同时需要提供一个空的构造函数,不然会出现JsonMappingException: No suitable constructor这样的错误。然后就可以使用RabbitTemplate来发送这个类的对象了:

Baobiaoorder order = new Baobiaoorder(1, 2, "asjdfj", null, 1.0, LocalDateTime.now(), WAIT_BUYER_PAY, "189xxxxxxxx");rabbitTemplate.convertAndSend("pay-success-exchange","pay-success", order);
0 0
原创粉丝点击