当前位置: 首页 > 知识库问答 >
问题:

与Spring Cloud Stream的千分尺集成

颜嘉福
2023-03-14

我正在将Spring Cloud Stream应用程序迁移到功能方法。到目前为止,我使用了提供Spring集成的千分尺指标。请参见Spring集成-千分尺集成。

自迁移以来,使用StreamBridge生成的消息不再生成度量。这似乎是因为Spring集成在将通道定义为bean时创建了它的度量,而StreamBridge则动态创建通道。

话虽如此,我的问题是:

  • SCS是否提供任何其他类型的度量?
  • 如果没有,有没有办法强制应用程序事先声明通道为bean?

提前谢谢。

使现代化

下面的测试表明,即使在bean的属性中定义绑定目标,也不会在启动时创建。

用于测试的版本为:

Spring启动: 2.5.4

Spring-云-流: 3.1.3

class MessageChannelBeanTests {

    @Test
    void declaredOutputBindingsCreatesMessageChannelBeans() {

        TestChannelBinderConfiguration.applicationContextRunner(MessageChannelBeanTestsConfiguration.class)
                .withPropertyValues("spring.cloud.stream.bindings.myBinding.destination=myDestination",
                        "spring.cloud.stream.bindings.syso-in-0.destination=my-topic")
                .run(context -> {
                    final Map<String, MessageChannel> channels = context.getBeansOfType(MessageChannel.class);


                    /*
                     * Just to see which channels are declared as a bean
                     * The ouput is:
                     *
                     * nullChannel
                     * errorChannel
                     * syso-in-0
                     * my-topic.anonymous.errors
                     */
                    channels.entrySet()
                            .stream()
                            .map(Entry::getKey)
                            .forEach(System.out::println);

                    // Asserts that the channel is created as a bean even if the binding is set by properties
                    assertThat(channels)
                            .containsKey("myBinding");


                });

    }


    @EnableAutoConfiguration
    static class MessageChannelBeanTestsConfiguration {

        @Bean
        public Consumer<String> syso() {
            return System.out::println;
        }
    }
}

请注意,创建的MessageChannel bean包括:

nullChannel errorChannel syso-in-0我的主题。匿名的错误

但是没有我的绑定的痕迹

共有1个答案

齐冥夜
2023-03-14

是的,如果您为不存在的绑定定义属性,它将被提前创建为bean。例如,假设在消息传递系统中,您有一个名为myDestation的目的地(队列,主题等)。比你能拥有这样的东西

spring.cloud.stream.bindings.myinding.destination

使用网桥并将其发送到myBinding

 类似资料:
  • 我试图用千分尺集成一个简单的Spring Boot应用程序与新的遗迹。 以下是配置详细信息:- application.properties 砰.xml 我能够使用< code > micrometer-registry-Prometheus 依赖关系将Prometheus与此应用程序集成。我在本地系统中设置了Prometheus在Docker容器中运行。我使用了下面的一组命令- promethe

  • 我对Spring很陌生,正在尝试将我的应用程序连接到麋鹿。该应用程序运行的是Spring boot 1.5.5,因此我使用的是微米遗产。我的pom看起来像这样: 每当我尝试启动我的应用程序时,我都会收到以下错误: 根本原因似乎是类io.micrometer.core.instrument.config.validate.Validated它似乎没有像它应该的那样出现在包中。对此有什么想法吗?

  • 我想使用New Relic,使用Spring启动执行器的千分尺支持。我没有使用代理。我有如下配置。我可以在数据资源管理器(事件或度量等)中看到数据。但是,我在资源管理器页面的APM部分看不到任何东西。 这是由于配置的根本原因,也许是我错过了什么? 我想我不用用代理,因为我用的是千分尺,对吗? 我在资源管理器页面的APM部分看不到任何东西,这真的是一个问题吗?它会在适当的集成中自动出现吗? 谢谢。

  • 是否有任何方法可以测量实用程序如何使用线程池?我已经浏览了代码,但还没有看到任何直接的选项。

  • 我正在利用dogstatsd方法,使用千分尺将指标发送给datadog。我获得了正常的指标,如计数器和计量器,但我无法生成事件。有办法生成datadog事件吗?

  • 我想跟踪我的应用程序的度量,我做了一个研究,以找到最好的工具来做这件事。在尝试了Micrometer+DataDog之后,由于我已经使用了ElasticSearch,我尝试了APM Java代理,我发现在Kibana仪表板中获得的数据量相当可观。我可以看到我的endpoint,并调查时间花在了哪里(Mysql查询和其他东西)。 我还没有尝试过Micrometer+ElasticSearch,但从文