【发布时间】:2020-04-09 21:36:08
【问题描述】:
我想创建一个异步读取kafka消息的流,并使用队列通道来累积一些要处理的消息,并且只有在处理完这些消息(例如50条消息)后才能再处理50条或者因为它释放了该队列中的空间。 我尝试使用从kafka委托读取另一个流的流程,该流程带有带有PollerMetadata(Pollers.fixedDelay(500).maxMessagesPerPoll(50))的QueueChannel,但是轮询器使用单个线程来读取那里的消息,我无法并行处理50 条消息,如果我在轮询器中放置一个执行程序,它将像普通执行程序一样工作,它会累积消息,并且在我有一个新线程可供他从 kafka 获取另一条消息之前,它不会挂在 50 条。
目标是并行处理多达 50 条 kafka 消息,但他只在此队列释放时再次在 kafka (consumer.pool) 中读取,但他正在从 kafka 中无限读取并在限制数量内处理执行者或轮询者,我可以使用带有kafka的spring集成流程来实现这个目标吗?
每个消费者主题只有这个配置就够了吗?日志总是打印相同的线程: [ntainer#0-1-C-1] 即使我设置了 10 的并发性
> Kafka.messageDrivenChannelAdapter(consumerFactory, > 主题).configureListenerContainer { kafkaMessageListenerContainer -> > kafkaMessageListenerContainer.concurrency(并发) > kafkaMessageListenerContainer.ackMode(ContainerProperties.AckMode.RECORD) > } > .errorChannel(IntegrationContextUtils.ERROR_CHANNEL_BEAN_NAME)块引用
【问题讨论】:
标签: spring-boot spring-integration spring-kafka spring-integration-dsl