一尘不染

订阅Spring Metrics频道

spring-boot

因此,根据Spring的文档,它将在REST端点和消息通道上发布指标。

当我得到预期的结果时,REST端点工作正常。但是,我想处理指标中的每个更改。因此它说它将默认将消息发布到一个名为“ metricsChannel”的频道

我试图创建下面的类来侦听此频道,但它似乎没有触发。Spring Boot应用程序的其他所有内容均保持默认状态。

package services.core;

import org.springframework.stereotype.Service;
import org.springframework.integration.annotation.ServiceActivator;

@Service
public class MetricService {
    @ServiceActivator(inputChannel = "metricsChannel")
    public void handleMessage(org.springframework.messaging.Message<?> message) {
        System.out.println("Message [" + message.toString() + "] is received");
    }
}

阅读 253

收藏
2020-05-30

共1个答案

一尘不染

我刚刚测试了一下,效果很好:

@Bean
@ServiceActivator(inputChannel = "metricsChannel")
public MessageHandler metricsHandler() {
    return System.out::println;
}

我已经在部分web-sockets 样本中做到了这一点server。添加了以下内容:

compile 'org.springframework.boot:spring-boot-starter-actuator'

到该项目的Gradle配置。

当我启动client应用程序时,我在控制台中看到了这一点:

GenericMessage [payload=Metric [name=gauge.response.time.star-star, value=26.0, timestamp=Tue Apr 14 16:03:53 EEST 2015], headers={metricName=gauge.response.time.star-star, id=08697a97-83c1-5000-f031-65f6797c0cd8, timestamp=1429016633672}]
GenericMessage [payload=Metric [name=counter.status.101.time.star-star, value=1, timestamp=Tue Apr 14 16:03:53 EEST 2015], headers={metricName=counter.status.101.time.star-star, id=8d070cb4-88e8-f5a7-6b83-6b27edf75bfc, timestamp=1429016633674}]

但是,是的:您的代码也很好。

2020-05-30