春天云流+谷歌PubSup:功能绑定不成问题。

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

我试图在同一个应用程序中消耗来自不同PubSub主题的多个消息。其中一个是轮询的,其他的应该是功能绑定的。我的功能消费者不工作。

@Bean
public Consumer<MessageA> messageAMessageHandler() {
    return message -> { ... }
}

@Scheduled(initialDelay = 60 * 1000, fixedRate = 600 * 1000)
public void pollBMessages() {
    this.bMessageSource.b().poll(m -> { ... }, new ParameterizedTypeReference<MessageB>() {
    });
}

spring:
  cloud:

    stream:
      pubsub:
        default:
          consumer:
            auto-create-resources: true

      gcp:
        pubsub:
          bindings:
            message-a-input:
              consumer:
                ack-mode: manual

      bindings:
        messageAMessageHandler-in-0:
          destination: message-b-topic
          group: my-service
        message-a-input:
          destination: message-a-topic
          group: my-service

    function:
      definition: messageAMessageHandler;messageCMessageHandler

轮询基于注释的MessageSource工作良好,但功能绑定没有被接收。它们在我的应用程序上下文中是 Beans,但云流或 gcp pubsub 忽略了它们。没有创建订阅,也没有消费消息。

我错过了什么?

spring-cloud-stream google-cloud-pubsub spring-cloud-gcp
1个回答
2
投票

既然你的轮询绑定是工作的,那么你可能是有了 @EnabledBinding 注解在你的代码中的某个地方。如果您查看应用程序的输出,您会看到这样一条消息。

onConfiguration$FunctionBindingRegistrar : Functional binding is disabled due to the presense of @EnableBinding annotation in your configuration.

Spring Cloud Stream不支持混合传统(基于注解的)和功能绑定风格。

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