如何解决“达到http.client.requests的URI标签最大数量”的警告?

时间:2019-02-28 16:43:06

标签: java spring-boot resttemplate

我在我的应用上收到此警告。我正在同时阅读约30位读者的rfidtags。每次有标签进入时,我都会访问数据库以查看是否在其中。我有一个正在使用的REST API。因此,我使用rest模板来访问rest api。关于如何解决这个问题的任何想法?谢谢!

1 个答案:

答案 0 :(得分:2)

因此,Spring应用程序收集所有入站和出站API调用的指标。可能会查询这些指标,以查看某个URL被调用了多少次。

在您的public Maybevehicle call()方法中,您通过附加到字符串来构建URL。这会将每个带有唯一rfidtag的URL放入其自己的URI标签存储桶中。

为避免此问题,您可以使用uriVariables映射:

String url = “http://url/{rfidtag}”;
Map<String, ?> uriVariables = new HashMap<>();
uriVariables.put(“rfidtag”, veh.getB().getRfidtag();
…
ResponseEntity<Bmwvehiclemain> results = appRestTemplate
        .exchange(url, HttpMethod.GET, requestEntity, Bmwvehiclemain.class, uriVariables);

这使Spring可以在http://url/{rfidtag}上收集指标,而不必为http://url/rfidtag1http://url/rfidtag2http://url/rfidtag3等使用URI标签。

这应该减少您的应用程序正在创建的URI标签的数量。

最大URI标记数的默认值为100。如果您想要更多指标,则可以通过将其属性值设置为其他值来对其进行自定义。例如,我的Spring应用程序配置有我的projectname-ws/src/main/resources/config/application.yml文件。在这个文件中,我可以输入

management:
  metrics:
    web:
      client:
        max-uri-tags: 200
      server:
        max-uri-tags: 200

增加用于度量标准的URI标签的最大数量。

如果您只是不想Reached the maximum number of URI tags for http.client.requests警告,可以输入

@SpringBootApplication(exclude = HttpClientMetricsAutoConfiguration.class)

在运行您的应用程序的任何类的顶部,该类将摆脱警告消息,但可能无法解决根本问题。