您的位置:首页 > 编程语言 > Java开发

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

2016-12-09 23:41 519 查看
@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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐