比如说,我现在有A,B,C三个机器,都作为console-consumer,若三个消费者放在一个群里,按我的理解,这个群里的每个人都应该接受到订阅的所有信息的啊,如果只有一个能消费,那何必要放在一个群里呢?
一个group内的消费者只能消费一次消息,不管有多少消费者。你要消费多次的话,就用多个group呗
kafka消息可以一次生产,多次消费,这是从业务层面来说的 。每个消费场景就是一个consumer-group.
kafka消息存储,分partition.每个partition消息只记录一个消费者的offset.只能有一个consumer能连接。
同一个consumer-group的消费者处理逻辑应该是一样的,只是处理的数据分区了,互不相同,并行处理,提升了整体吞吐量,仅此而已。
比如一个项目叫api项目,这个项目部署有4台机器实例,api项目属于一个Consumer GroupA订阅topic A 那么消费者yi就是机api项目的部署实例,就是4哥个
你需要理解一个服务要消费消息,就会订阅topic,但是你的服务部署的时候是可以多机部署,相当于一个服务多个消费实例,topc可以分区partion,同个topic的不同分区只能被一个服务多实例部署的消费者消费;不同的服务还可以订阅同一个topic;
同一时间内,机器A读取消息00001,B读取消息00002, C读取消息00003,这是为了提升应用对消息的消费(读取)效率,并且保证kafka的同一条消息不会被同一个应用逻辑重复处理。