以批处理方式处理传入的有效负载在spring cloud streams中未按预期工作

以批处理方式处理传入的有效负载在spring cloud streams中未按预期工作,spring,spring-cloud,spring-cloud-stream,Spring,Spring Cloud,Spring Cloud Stream,我说“没有按预期工作”,但实际上更像是“我真的不知道我在这里是否做了正确的工作”,我感觉我在混合来自不同方法的东西,并且没有真正的相关性 现在,我一直在使用SpringCloudStreams来处理来自PubSub订阅的字符串类型的消息,到目前为止,消息输入消息输出没有太多麻烦 我现在想做的是收集,比方说,1000条消息,处理它们,然后将它们一起发送到另一个PubSub-Topic。仍然不确定是否将它们作为列表或像现在这样单独发送,但同时发送(这不应该与此问题相关) 现在我发现了以下属性 spr

我说“没有按预期工作”,但实际上更像是“我真的不知道我在这里是否做了正确的工作”,我感觉我在混合来自不同方法的东西,并且没有真正的相关性

现在,我一直在使用SpringCloudStreams来处理来自PubSub订阅的字符串类型的消息,到目前为止,消息输入消息输出没有太多麻烦

我现在想做的是收集,比方说,1000条消息处理它们,然后将它们一起发送到另一个PubSub-Topic。仍然不确定是否将它们作为列表或像现在这样单独发送,但同时发送(这不应该与此问题相关)

现在我发现了以下属性

spring.cloud.stream.bindings.input.consumer.batch mode=true

以及以下更具体的GCP内容

spring.cloud.gcp.pubsub.publisher.batching.enabled=true
spring.cloud.gcp.pubsub.publisher.batching.delay-threshold-seconds=300
spring.cloud.gcp.pubsub.publisher.batching.element-count-threshold=100
所以第一个问题是它们之间有任何联系吗?必须将第一个与其他三个连接在一起吗

在我将以前的属性添加到application.properties文件后发生的事情实际上根本没有改变。消息不断到达和离开应用程序,没有任何问题,也没有任何批处理方法

目前使用功能特性的方式如下

    @Bean
    public Function<Message<String>, String> sampleFunction() {

       ... // Stream processing in here

       return processedString;

    }
@Bean
公共函数sampleFunction(){
…//在这里进行流处理
返回处理过的字符串;
}
我原以为这会因为一些消息而崩溃,因为该方法只接收字符串,而不是字符串列表。因为它没有崩溃,我修改了上面的方法来接收字符串列表(可能Spring在幕后做了一些魔术,仍然以字符串的形式接收消息,但将它们收集到一个列表中,以便该方法随后处理?)

@Bean
公共函数sampleFunction(){
…//在这里进行流处理
返回处理过的字符串;
}
但这只是崩溃,因为它试图将单个字符串消息解析为字符串列表


如何准备代码将所有这些字符串消息批处理到列表中?这方面有什么例子吗?

…批处理模式
仅适用于支持它的活页夹(例如Kafka、RabbitMQ)。看起来GCP绑定器不支持它(我看不到对属性的引用)

发布者批处理与使用者批处理无关

    @Bean
    public Function<Message<List<String>>, String> sampleFunction() {

       ... // Stream processing in here

       return processedString;

    }