Kinesis Streams 和 Spring 集成渠道

Kinesis Streams and Spring Integration Channels

我正在开发一个消费来自多个 Kinesis 流的事件的消费者。我有一些问题想了解最佳实践。

  1. 我应该为每个流创建一个频道吗? "channel per stream"还是"one channel for all streams"应该考虑哪些因素?

  2. 哪个频道更适合我的案例性能?有不同的通道类型,如 PollableChannel、SubscribaleChannel 和 DirectChannel。

谢谢

KinesisMessageDrivenChannelAdapter是一个主动组件,在任务执行器中进行消费和消息发送。因此,您可能认为不要将消息转移到 QueueChannelExecutorChannel - 逻辑已经是异步的并且在机器上涉及足够多的线程。最好不要将处理转移到单独的线程并保持此消费线程忙碌并且不要将更多记录从 Kinesis 轮询到内存中。

一个 KinesisMessageDrivenChannelAdapter 基本上可以为多个流完成与为不同流使用多个单独的适配器相同的工作 - 机器上的线程容量将被使用。

我们需要不同的通道适配器,以应对不同的处理逻辑或不同的数据类型,或不同的 Kinesis Client 选项。在所有其他情况下,单个实例就足够了。