@EnableBinding 注解会自动禁用函数式方法吗?

问题描述 投票:0回答:1

我有一个微服务,它使用自定义绑定器、

CustomBinderA
和声明性方法。在代码中,您可以找到几个带注释的类,例如
@EnableBinding
@Input
@StreamListener
等。一切正常。

最近,我实现了另一个活页夹,

CustomBinderB
,并使用最新的功能方法在不同的微服务上对其进行了测试,一切也都运行良好。

现在,我尝试将新的绑定器集成到以前的微服务中,同时仍然保留旧的绑定器。每个配置点都已启用,一切都应该正常。但是,我注意到只有显式声明的绑定(即带有

@Input
注释的绑定)才会被实例化。

所以,我唯一想弄清楚的是:函数式方法和声明式方法是否可以一起工作,或者是否有某种方式,如果使用

@EnableBinding
,与函数式方法相关的属性将被忽略?

我尝试使用多绑定器方法组合这两种配置。

spring:
  cloud
    stream:
      function:
        definition: createOrderConsumer

      binders:
        CustomBinderB:
          type: custom-binder-b
        CustomBinderA:
          type: custom-binder-a


...
      bindings:
        createOrderConsumer-in-0:
          destination: createOrder
          binder: CustomBinderB
        outbox:
          destination: notifyOrder
          binder: CustomBinderA
        inbox:
          destination: inbox
          binder: CustomBinderA

我希望每个可绑定通道都被实例化。

但是,只有“收件箱”和“发件箱”通道被实例化,这是使用 @Input 和 @Output 注释显式声明的通道。

spring spring-boot java-11 spring-cloud-stream spring-cloud-function
1个回答
0
投票

EnableBinding
和所有相关组件,例如
Input
Output
等,现已弃用一段时间,并从框架的最新版本中完全删除(从
4.0.0
开始)。因此,我们强烈建议您停止在应用程序中使用
EnableBinding
,并完全迁移到函数式风格。如果您使用的 Spring Cloud Stream 版本仍支持
EnableBinding
,则不建议在单个应用程序中混合两种样式。

© www.soinside.com 2019 - 2024. All rights reserved.