diff --git a/NewLife.Redis/Queues/ConsumerInfo.cs b/NewLife.Redis/Queues/ConsumerInfo.cs index 9436f8b..1db6472 100644 --- a/NewLife.Redis/Queues/ConsumerInfo.cs +++ b/NewLife.Redis/Queues/ConsumerInfo.cs @@ -21,6 +21,8 @@ public class ConsumerInfo /// public void Parse(Object[] vs) { + if (vs == null || vs.Length == 0) return; + for (var i = 0; i < vs.Length - 1; i += 2) { var key = (vs[i] as IPacket)!.ToStr(); diff --git a/NewLife.Redis/Queues/RedisStream.cs b/NewLife.Redis/Queues/RedisStream.cs index 459f173..1e5f71a 100644 --- a/NewLife.Redis/Queues/RedisStream.cs +++ b/NewLife.Redis/Queues/RedisStream.cs @@ -879,14 +879,18 @@ XREAD count 3 streams stream_key 0-0 var rs = Execute((rc, k) => rc.Execute("XINFO", "CONSUMERS", Key, group), false); if (rs == null) return []; - var cs = new ConsumerInfo[rs.Length]; + var cs = new List(rs.Length); for (var i = 0; i < rs.Length; i++) { - cs[i] = new ConsumerInfo(); - cs[i].Parse((rs[i] as Object[])!); + if (rs[i] is Object[] vs && vs.Length > 0) + { + var ci = new ConsumerInfo(); + ci.Parse(vs); + cs.Add(ci); + } } - return cs; + return cs.ToArray(); } #endregion