@@ -1892,9 +1892,10 @@ type XInfoConsumersCmd struct {
18921892}
18931893
18941894type XInfoConsumer struct {
1895- Name string
1896- Pending int64
1897- Idle time.Duration
1895+ Name string
1896+ Pending int64
1897+ Idle time.Duration
1898+ Inactive time.Duration
18981899}
18991900
19001901var _ Cmder = (* XInfoConsumersCmd )(nil )
@@ -1932,12 +1933,13 @@ func (cmd *XInfoConsumersCmd) readReply(rd *proto.Reader) error {
19321933 cmd .val = make ([]XInfoConsumer , n )
19331934
19341935 for i := 0 ; i < len (cmd .val ); i ++ {
1935- if err = rd .ReadFixedMapLen (3 ); err != nil {
1936+ nn , err := rd .ReadMapLen ()
1937+ if err != nil {
19361938 return err
19371939 }
19381940
19391941 var key string
1940- for f := 0 ; f < 3 ; f ++ {
1942+ for f := 0 ; f < nn ; f ++ {
19411943 key , err = rd .ReadString ()
19421944 if err != nil {
19431945 return err
@@ -1952,6 +1954,10 @@ func (cmd *XInfoConsumersCmd) readReply(rd *proto.Reader) error {
19521954 var idle int64
19531955 idle , err = rd .ReadInt ()
19541956 cmd .val [i ].Idle = time .Duration (idle ) * time .Millisecond
1957+ case "inactive" :
1958+ var inactive int64
1959+ inactive , err = rd .ReadInt ()
1960+ cmd .val [i ].Inactive = time .Duration (inactive ) * time .Millisecond
19551961 default :
19561962 return fmt .Errorf ("redis: unexpected content %s in XINFO CONSUMERS reply" , key )
19571963 }
@@ -2226,10 +2232,11 @@ type XInfoStreamGroupPending struct {
22262232}
22272233
22282234type XInfoStreamConsumer struct {
2229- Name string
2230- SeenTime time.Time
2231- PelCount int64
2232- Pending []XInfoStreamConsumerPending
2235+ Name string
2236+ SeenTime time.Time
2237+ ActiveTime time.Time
2238+ PelCount int64
2239+ Pending []XInfoStreamConsumerPending
22332240}
22342241
22352242type XInfoStreamConsumerPending struct {
@@ -2452,13 +2459,14 @@ func readXInfoStreamConsumers(rd *proto.Reader) ([]XInfoStreamConsumer, error) {
24522459 consumers := make ([]XInfoStreamConsumer , 0 , n )
24532460
24542461 for i := 0 ; i < n ; i ++ {
2455- if err = rd .ReadFixedMapLen (4 ); err != nil {
2462+ nn , err := rd .ReadMapLen ()
2463+ if err != nil {
24562464 return nil , err
24572465 }
24582466
24592467 c := XInfoStreamConsumer {}
24602468
2461- for f := 0 ; f < 4 ; f ++ {
2469+ for f := 0 ; f < nn ; f ++ {
24622470 cKey , err := rd .ReadString ()
24632471 if err != nil {
24642472 return nil , err
@@ -2472,7 +2480,13 @@ func readXInfoStreamConsumers(rd *proto.Reader) ([]XInfoStreamConsumer, error) {
24722480 if err != nil {
24732481 return nil , err
24742482 }
2475- c .SeenTime = time .Unix (seen / 1000 , seen % 1000 * int64 (time .Millisecond ))
2483+ c .SeenTime = time .UnixMilli (seen )
2484+ case "active-time" :
2485+ active , err := rd .ReadInt ()
2486+ if err != nil {
2487+ return nil , err
2488+ }
2489+ c .ActiveTime = time .UnixMilli (active )
24762490 case "pel-count" :
24772491 c .PelCount , err = rd .ReadInt ()
24782492 case "pending" :
0 commit comments