spring-cloud-stream - Spring Cloud Stream + Google Pub/Sup:功能绑定不起作用
问题描述
我正在尝试在同一应用程序中使用来自不同 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>() {
});
}
我的应用程序.yml:
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 的注解效果很好,但没有拾取功能绑定。它们是我的应用程序上下文中的 Bean,但云流或 gcp pubsub 会忽略它们。不创建订阅,也不消耗任何消息。
我错过了什么?
解决方案
由于您的轮询活页夹正在工作,您的代码中可能有@EnabledBinding
注释。如果您查看应用程序输出,您将看到如下消息:
onConfiguration$FunctionBindingRegistrar : Functional binding is disabled due to the presense of @EnableBinding annotation in your configuration.
Spring Cloud Stream 不支持混合遗留(基于注释)和功能绑定样式。
推荐阅读
- python - micropython - ESP32 - MQTT 异常 4 - 谷歌云物联网
- javascript - 使用现有接口扩展接口
- javascript - 为什么我的元素没有出现?
- python - 如何使用 Python 查找 Word 文档的页数?
- java - 将第一个数组元素与最后一个交换,第二个与倒数第二个交换,依此类推
- python - 如何根据 django rest framefork 中的用户角色返回嵌套数据?
- numpy - 高级 numpy 布尔索引
- kubernetes - apply 是否根据滚动更新策略工作?
- javascript - 当我想给元素随机绝对位置时,如何防止元素重叠
- c++ - 当我有 glew32 时,为什么我需要链接到 opengl32?