我了解到,每个kinesis流可以有多个消费者应用程序。
http://docs.aws.amazon.com/kinesis/latest/dev/developing-consumers-with-kcl.html
但是,我听说你只能在每个分片的消费者上有。这是真的吗?我找不到任何留档来支持这一点,我无法想象如果多个消费者从同一个流中阅读会是什么样子。当然,这并不意味着生产者需要为不同的消费者重复不同分片中的内容。
派对迟到了,但答案是每个驱动分片可以有多个消费者。KCL实例每个分片只会启动一个进程,但您可以让另一个KCL实例使用相同的流(和分片),假设第二个有权限。
然而,正如文件中所述,存在一些限制,包括:
每个碎片每秒最多可支持5个事务进行读取,最大总数据读取速率为每秒2 MB。
如果您想要一个具有多个消费者的流,其中每条消息将被处理一次,那么您最好使用类似于Amazon简单队列服务的服务。
Kinesis客户端库在后台启动线程,每个线程监听流中的1个分片。您不能通过多个线程连接到分片,这是设计。
http://docs.aws.amazon.com/kinesis/latest/dev/kinesis-record-processor-scaling.html
例如,如果您的应用程序在一个EC2实例上运行,并且正在处理一个包含四个碎片的Amazon Kinesis流。这个实例有一个KCL工作进程和四个记录处理器(每个碎片一个记录处理器)。这四个记录处理器在同一进程中并行运行。
在上面的解释中,术语“KCL工作者”是指Kinesis消费者应用程序。不是线程。
但在下面,相同的“KCL工作者”术语指的是应用程序中的“工作者”线程;这是一个可运行的。
通常,在使用KCL时,应确保实例数不超过碎片数(故障备用目的除外)。每个碎片都由一个KCL工作者处理,并且只有一个对应的记录处理器,因此您不需要多个实例来处理一个碎片。
见工人。KCL源中的java类。
我已经读过一些关于动画片和多个消费者的问题,但我仍然不明白它是如何工作的。 我的用例:我有一个只有一个分片的运动流。我想使用不同的lambda函数使用这个分片,每个函数都独立。就像每个lambda函数都有自己的分片迭代器一样。 有可能吗?是否设置多个lambda使用者(基于流)从同一流/碎片读取?
问题内容: 我有一个JMS客户端,它正在生成消息并通过JMS队列发送到其唯一的使用者。 我想要的是不止一个消费者收到这些消息。我想到的第一件事是将队列转换为主题,以便现有用户和新用户都可以订阅并将相同的消息传递给他们。 显然,这将涉及在生产者和消费者方面修改当前的客户代码。 我还要查看其他选项,例如创建第二个队列,这样就不必修改现有的使用者。我相信这种方法有很多优点,例如(如果我错了,请纠正我)在
我有一个生产者/消费者场景,我不希望一个生产者交付产品,多个消费者消费这些产品。然而,常见的情况是,交付的产品只被一个消费者消费,而其他消费者从未看到过这个特定的产品。我不想实现的是,一个产品被每个消费者消费一次,而没有任何形式的阻碍。 我的第一个想法是使用多个BlockingQueue,每个消费者使用一个,并使生产者将每个产品按顺序放入所有可用的BlockingQueues中。但是,如果其中一个
由于消息需求的排序,我们有一个主题和一个分区。我们有两个消费者运行在不同的服务器上,具有相同的配置集,即groupId、consumerId和consumerGroup。即 1主题- 当我们部署消费者时,相同的代码会部署在两台服务器上。当消息到来时,我们会注意到两个消费者都在消费消息,而不是只有一个处理。让消费者在两台独立的服务器上运行的原因是,如果一台服务器崩溃,至少其他服务器可以继续处理消息。
我们正在开发一个应用程序,我们想听Kafka中不止一个主题。所有主题都有一个分区。所有主题名称都有一个公共的前缀,例如“test-x”、“test-y”,所以我们可以对它使用spring。 我们希望编写一个java spring使用者,它使用模式监听所有主题。我们的想法是,我们可以运行同一个消费者(属于同一个组)的多个实例,Kafka将为不同的消费者分发来自不同主题的消息。 然而,这似乎并不奏效。
有一个基本示例,它对1个消费者起作用。它接收消息。但是添加一个额外的消费者将被忽略。 consumer2的“22”事件从未引发问题。如果我使用命令行工具检查该主题,则该主题的数据存在