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

无法将DEFAULT_STREAMS_CONFIG_BEAN_NAME标记为主要

万喜
2023-03-14

我刚刚升级到spring-boot 2.1.3.release,由于这个新的类/方法,我不能拥有多个StreamsBuilderFactoryBean(KafKastreamsFactoryBeanConfigurer只需要一个FactoryBean):

@Configuration
@ConditionalOnClass(StreamsBuilder.class)
@ConditionalOnBean(name = 
KafkaStreamsDefaultConfiguration.DEFAULT_STREAMS_BUILDER_BEAN_NAME)
class KafkaStreamsAnnotationDrivenConfiguration {
 //...
 @Bean
 public KafkaStreamsFactoryBeanConfigurer kafkaStreamsFactoryBeanConfigurer(
        StreamsBuilderFactoryBean factoryBean) {
    return new KafkaStreamsFactoryBeanConfigurer(this.properties, factoryBean);
 }
}

我得到这个错误:

Parameter 0 of method kafkaStreamsFactoryBeanConfigurer in org.springframework.boot.autoconfigure.kafka.KafkaStreamsAnnotationDrivenConfiguration required a single bean, but 2 were found:
- &defaultKafkaStreamsBuilder: defined by method 'defaultKafkaStreamsBuilder' in class path resource [com/elsevier/q2c/transaction/snapshot/builder/config/KafkaStreamsConfig.class]
- &snapshotKafkaStreamsBuilder: defined by method 'snapshotKafkaStreamsBuilder' in class path resource [com/elsevier/q2c/transaction/snapshot/builder/config/KafkaStreamsConfig.class]
@Bean(name = KafkaStreamsDefaultConfiguration.DEFAULT_STREAMS_BUILDER_BEAN_NAME)
@Primary
public StreamsBuilderFactoryBean defaultKafkaStreamsBuilder(
        @Qualifier(KafkaStreamsDefaultConfiguration.DEFAULT_STREAMS_CONFIG_BEAN_NAME) KafkaStreamsConfiguration streamsConfiguration) {
    StreamsBuilderFactoryBean streamsBuilderFactoryBean = new StreamsBuilderFactoryBean(streamsConfiguration);
    return streamsBuilderFactoryBean;
}

@Bean(name = SNAPSHOT_STREAMS_BUILDER_BEAN_NAME)
public StreamsBuilderFactoryBean snapshotKafkaStreamsBuilder(
        @Qualifier(SNAPSHOT_STREAMS_CONFIG_BEAN_NAME) KafkaStreamsConfiguration streamsConfiguration) {
    StreamsBuilderFactoryBean streamsBuilderFactoryBean = new StreamsBuilderFactoryBean(streamsConfiguration);
    return streamsBuilderFactoryBean;
}

我在想,也许@primary使构造的bean成为一个主要的bean。任何帮助都超过感激!

编辑:我通过删除@enablekafkastreamsdefault_streams_builder_bean_name来规避这个问题。因此,KafKastreamsFactoryBeanConfigurer不起作用。

共有1个答案

宰父淳
2023-03-14

在我的例子中,我通过删除@enablekafkastreams(即没有自动创建流beans),并手动创建所有需要的流beans来绕过这个问题。如果您有多个流,看起来会更好,因为命名也会更容易删除。

 类似资料:
  • 问题内容: 我有一个问题,为什么将main方法标记为 public ? 根据关于stackoverflow的回答,它声明为 静态 “该方法是静态的,因为否则会产生歧义:应调用哪个构造函数?” 但是,任何人都可以解释为什么总是将其宣布为 公开 吗? 问题答案: 启动程序的初始化软件必须能够看到以便可以调用它。

  • 我有普罗米修斯从几个机器上的节点导出器中抓取指标,配置如下: 在Grafana中查看时,这些实例被分配了毫无意义的IP地址;相反,我更愿意看到他们的主机名。我认为您应该能够重新标记标签以匹配节点的主机名,因此我尝试使用如下重新标记规则,但没有任何效果: 我可以手动重新标记每个目标,但这需要将每个主机名硬编码到Prometheus中,这不是很好。我看到节点导出器提供了包含主机名的度量值,但是如何从中

  • 对于我的Vuejs应用程序,我使用Vee-验证进行验证。目前,它将有效的URL(如)标记为无效。 这也发生在他们的样本上:http://vee-validate.logaretm.com/rules.html#rule-网址 如果您输入在他们的示例中,您将看到消息

  • 我是学习android Java的初学者。我从Youtube上学习java android教程,我完全遵循视频中的编码,但在android Studio上我的编码显示“无法解析符号‘标签’”。我可以知道是什么问题吗?并希望得到在座各位大师的讲解。

  • 问题内容: 我在正在使用的一个应用程序中使用Spring和Hibernate,但是在处理事务时遇到了问题。 我有一个服务类,该类从数据库中加载一些实体,修改它们的一些值,然后(当所有内容都有效时)将这些更改提交给数据库。如果新值无效(我只能在设置它们后检查),但我不想保留更改。为了防止Spring / Hibernate保存更改,我在方法中抛出异常。但是,这导致以下错误: 这是服务: 这就是我调用

  • 当我试图获取以前插入到数据库中的更新数据时,我的代码中遇到了一些问题。邮递员的错误代码: “JSON分析错误:无法反序列化START_OBJECT令牌外的java.lang.Integer实例;嵌套异常为com.fasterxml.jackson.DataBind.JSONMappingException:无法反序列化START_OBJECT令牌外的java.lang.Integer实例\n位于[