|
|
@ -6,28 +6,29 @@ import ( |
|
|
|
"github.com/seaweedfs/seaweedfs/weed/mq/topic" |
|
|
|
"github.com/seaweedfs/seaweedfs/weed/pb/mq_pb" |
|
|
|
) |
|
|
|
|
|
|
|
type ConsumerGroupInstance struct { |
|
|
|
InstanceId string |
|
|
|
// the consumer group instance may not have an active partition
|
|
|
|
Partitions []*topic.Partition |
|
|
|
ResponseChan chan *mq_pb.SubscriberToSubCoordinatorResponse |
|
|
|
Partitions []*topic.Partition |
|
|
|
ResponseChan chan *mq_pb.SubscriberToSubCoordinatorResponse |
|
|
|
} |
|
|
|
type ConsumerGroup struct { |
|
|
|
// map a consumer group instance id to a consumer group instance
|
|
|
|
ConsumerGroupInstances cmap.ConcurrentMap[string, *ConsumerGroupInstance] |
|
|
|
mapping *PartitionConsumerMapping |
|
|
|
mapping *PartitionConsumerMapping |
|
|
|
} |
|
|
|
|
|
|
|
func NewConsumerGroup() *ConsumerGroup { |
|
|
|
return &ConsumerGroup{ |
|
|
|
ConsumerGroupInstances: cmap.New[*ConsumerGroupInstance](), |
|
|
|
mapping: NewPartitionConsumerMapping(pub_balancer.MaxPartitionCount), |
|
|
|
mapping: NewPartitionConsumerMapping(pub_balancer.MaxPartitionCount), |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
func NewConsumerGroupInstance(instanceId string) *ConsumerGroupInstance { |
|
|
|
return &ConsumerGroupInstance{ |
|
|
|
InstanceId: instanceId, |
|
|
|
InstanceId: instanceId, |
|
|
|
ResponseChan: make(chan *mq_pb.SubscriberToSubCoordinatorResponse, 1), |
|
|
|
} |
|
|
|
} |
|
|
|