Spring集成 - 循环中的消息(批处理)

时间:2017-12-12 15:33:57

标签: java spring spring-integration spring-amqp

我需要能够从rabbitmq接收消息,做一些转换(从1输入消息,我创建1000条消息),然后按照以下方式处理这1000条消息:我按批次推送消息,然后睡5秒

你可以看到下面的代码,我需要的帮助是最后一步 - 如何以这种方式进行消息批处理?

@Bean
    public IntegrationFlow refreshFlow() {
        return IntegrationFlows
                //get messages from rabbitmq
                .from(refreshInboundAdapter())
                //convert to POJO
                .transform(new JsonToObjectTransformer(RefreshRequest.class))
                //make 1 -> 1000 messages (but release in batches of 10, not all)
                .<RefreshRequest, List<ElasticMatch>>transform(m -> componentConfig.matchRefreshService().processRequest(m))
                //HERE WAIT 5 seconds and forward to rabbit in batches of 10
                .handle(refreshOutboundEndpoint())
                .get();
    }

1 个答案:

答案 0 :(得分:0)

不确定你的意思&#34;等待5秒&#34;,但&#34;分批发布10&#34;对于聚合器来说,这正是一项任务。您需要有一些人为correlationKey,配置expireGroupsUponCompletion = trueMessageCountReleaseStrategy

有关详细信息,请参阅Reference Manual