Spring云流自定义绑定器未注册。如果使用@Configuration,则禁用kafka绑定器

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

我正在尝试制作一个自定义的弹簧云流粘合剂,但它不会注册自己:

活页夹实施:

public class DPSBinder implements Binder<SubscribableChannel, ConsumerProperties, ProducerProperties> {

private DecisionPersistenceServiceClient dpsClient;

private MessageHandler dpsClientConsumerMessageHandler = null;

public DPSBinder(DecisionPersistenceServiceClient dpsClient) {
    this.dpsClient = dpsClient;
}

@Override
public Binding<SubscribableChannel> bindConsumer(String name, String group, SubscribableChannel inboundBindTarget,
        ConsumerProperties consumerProperties) {

    return null;
}

@Override
public Binding<SubscribableChannel> bindProducer(String name, SubscribableChannel outboundBindTarget,
        ProducerProperties producerProperties) {

    switch (name) {

    case "PERSIST_POST":

        this.dpsClientConsumerMessageHandler = message -> dpsClient.persist((DPAPayload) message.getPayload());

        break;

    default:
        this.dpsClientConsumerMessageHandler = null;

    }

    if (this.dpsClientConsumerMessageHandler != null)
        this.subscribe(outboundBindTarget);

    return () -> this.dpsClientConsumerMessageHandler = null;

}

public void subscribe(SubscribableChannel outboundBindTarget) {

    outboundBindTarget.subscribe(this.dpsClientConsumerMessageHandler);
}}

配置类:

@Configuration
public class DPSBinderConfiguration {
@Bean
public DPSBinder dpsBinder(DecisionPersistenceServiceClient dpsClient) {

    return new DPSBinder(dpsClient);
}}

spring.binders文件:

dps:something.something.DPSBinderConfiguration

application.yml

application.yml
spring:
 cloud:
  stream:
   bindings:
    input:
      destination: DPP_EVENTS
      group: dpp-local
      binder: kafka
    output:
      destination: PERSIST_POST
      binder: dps
  binders:
    kafka:
      type: kafka
    dps:
      type: dps

我遵循了春云流准则来创建自定义绑定器,但这不起作用。此外,使用@Configuration创建活页夹bean会禁用我在类路径中添加的kafka活页夹。

java spring spring-boot apache-kafka spring-cloud-stream
1个回答
0
投票

我发现了这个问题。实际上,在声明绑定bean的地方不应该使用@Configuration。此外,我修复了我的活页夹实现中的一些逻辑问题。

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