问题

1.spring.cloud.alibaba.版本2.2.1.RELEAS在用Micrometer 集成 Prometheus监控的时候,遇到prometheus的数据无法解析,报错原因是:supportedMediaTypes支持的类型不存在。
2.springBoot在集成Prometheus监控时,访问http://localhost:80/actuator/prometheus 时,报错
【org.springframework.http.converter.HttpMessageNotWritableException: No converter for [class java.lang.String] with preset Content-Type 'null'】

定位问题

两者的问题都在于[prometheus的数据无法解析,supportedMediaTypes支持的类型不存在。]
1.根据错误信息查看:
org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor的方法writeWithMessageConverters

异常

  • 低版本micrometer-registry-prometheus无法正常显示:
 `Could not find acceptable representation` 
  • 高版本1.3.5 micrometer-registry-prometheus无法正常显示:
HttpMessageNotWritableException: No converter for [class java.lang.String] with preset Content-Type 'null'

解决方案分析

解决Could not find acceptable representation
出现这种异常的原因是因为在你的项目中,直接new MappingJackson2HttpMessageConverter对象,没有设置它的MediaType,使得它只支持MediaType.APPLICATION_JSON一种类型而缺少其他的mediaTypes类型。

解决方法

将丢失的mediaTypes类型都加到MappingJackson2HttpMessageConverter。

List<MediaType> mediaTypes = Arrays.asList(
                MediaType.APPLICATION_JSON,
                MediaType.TEXT_PLAIN,
                MediaType.TEXT_HTML,
                MediaType.TEXT_XML,
                MediaType.APPLICATION_OCTET_STREAM);
        jackson2HttpMessageConverter.setSupportedMediaTypes(mediaTypes);

实例示例
参考链接:https://blog.csdn.net/shenhonglei1234/article/details/105828795
https://blog.csdn.net/shenhonglei1234/article/details/106922919


DullThinking
18 声望3 粉丝