全局JSON序列化导致prometheus数据格式错乱

现象

现场配置完prometheus端点后,返回数据格式乱了,如下图所示
在这里插入图片描述

正常结果数据如下图所示
在这里插入图片描述

分析

在单个微服务上访问prometheus端点数据返回格式正常。在小型化化格式返回就错乱了。数据返回格式是由消息转化统一处理的。在小型化工程中,对Long类型序列化统一进行了处理。
在这里插入图片描述
configureMessageConverters这个方法文档是这么写的:

配置HttpMessageConverters以用于对请求或响应的主体进行读写。如果没有添加转换器,则注册一个默认的转换器列表。

注意,向列表中添加转换器时关闭默认转换器注册。简单地添加一个转换器而不产生影响默认注册时,考虑使用extendMessageConverters方法

默认消息转化器位于org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport#addDefaultHttpMessageConverters

在这里插入图片描述

即使用上述方法添加HttpMessageConverter将会覆盖掉默认添加的HttpMessageConverter。所以在代码使用configureMessageConverters即只配置了json消息转化器,会对所有响应进行json序列化。

解决

configureMessageConverters方法替换为extendMessageConverters,对消息转化进行扩展

增加以下代码:

converters.removeIf(converter -> converter instanceof MappingJackson2HttpMessageConverter);

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值