Spring Cloud Stream自定义活页夹未注册。如果使用@Configuration,则禁用kafka绑定程序

时间:2019-02-19 18:06:46

标签: java spring spring-boot apache-kafka spring-cloud-stream

我正在尝试制作自定义的春季云流活页夹,但它不会自行注册:

活页夹实现:

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

我已经按照Spring Cloud Stream准则创建了一个自定义活页夹,但这没有用。此外,使用@Configuration创建活页夹bean会禁用我在类路径上添加的kafka活页夹。

1 个答案:

答案 0 :(得分:0)

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