我正在开发一个消费者,它消耗来自多个Kinesis流的事件。我有一些问题需要了解最佳实践。
我应该为每个流创建一个频道吗?在“每个流的频道”或“所有流的一个频道”之间应该考虑哪些因素来决定?
哪种渠道更符合我的案例表现?有不同的渠道类型,如PollableChannel,SubscribaleChannel和DirectChannel。
谢谢
答案 0 :(得分:0)
KinesisMessageDrivenChannelAdapter
是一个活动组件,它在任务执行器中执行消费和消息发送。因此,您可能认为不要将消息转移到QueueChannel
或ExecutorChannel
- 逻辑已经是异步并且涉及机器上的足够线程。最好不要将处理转移到单独的线程并保持此消耗线程忙,并且不要将更多记录从Kinesis轮询到内存中。
对于不同的流,一个KinesisMessageDrivenChannelAdapter
基本上可以为几个流做同样的工作 - 将使用机器上的线程容量。
在不同的处理逻辑或不同的数据类型或不同的Kinesis客户端选项的情况下,我们需要不同的通道适配器。在所有其他情况下,单个实例就足够了。