Просмотр исходного кода

update Admin.NET/Admin.NET.Core/EventBus/RedisQueue.cs.
增加普通队列功能

Signed-off-by: npc6 <jjwsoft@qq.com>

npc6 2 лет назад
Родитель
Сommit
ed397ccd61
1 измененных файлов с 66 добавлено и 0 удалено
  1. 66 0
      Admin.NET/Admin.NET.Core/EventBus/RedisQueue.cs

+ 66 - 0
Admin.NET/Admin.NET.Core/EventBus/RedisQueue.cs

@@ -14,6 +14,72 @@ namespace Admin.NET.Core;
 public static class RedisQueue
 {
     private static readonly ICache _cache = App.GetRequiredService<ICache>();
+    
+    /// <summary>
+    /// 获取普通队列
+    /// </summary>
+    /// <typeparam name="T"></typeparam>
+    /// <param name="topic"></param>
+    /// <returns></returns>
+    public static IProducerConsumer<T> GetQueue<T>(string topic)
+    {
+        var queue = (_cache as FullRedis).GetQueue<T>(topic);
+        return queue;
+    }
+
+    /// <summary>
+    /// 发送一个数据列表到队列
+    /// </summary>
+    /// <typeparam name="T"></typeparam>
+    /// <param name="topic"></param>
+    /// <param name="value"></param>
+    /// <returns></returns>
+    public static int AddQueue<T>(string topic, T value)
+    {
+        var queue = GetQueue<T>(topic);
+        return queue.Add(value);
+    }
+
+    /// <summary>
+    /// 发送一个数据列表到队列
+    /// </summary>
+    /// <param name="topic"></param>
+    /// <param name="value"></param>
+    /// <typeparam name="T"></typeparam>
+    /// <returns></returns>
+    public static int AddQueueList<T>(string topic, List<T> value)
+    {
+        var queue = GetQueue<T>(topic);
+        var count = queue.Count;
+        var result = queue.Add(value.ToArray());
+        return result - count;
+    }
+
+    /// <summary>
+    /// 获取一批队列消息
+    /// </summary>
+    /// <typeparam name="T"></typeparam>
+    /// <param name="topic"></param>
+    /// <param name="Count"></param>
+    /// <returns></returns>
+    public static List<T> Take<T>(string topic, int Count = 1)
+    {
+        var queue = GetQueue<T>(topic);
+        var result = queue.Take(Count).ToList();
+        return result;
+    }
+
+    /// <summary>
+    /// 获取一个队列消息
+    /// </summary>
+    /// <typeparam name="T"></typeparam>
+    /// <param name="topic"></param>
+    /// <returns></returns>
+    public static async Task<T> TakeOneAsync<T>(string topic)
+    {
+        var queue = GetQueue<T>(topic);
+        return await queue.TakeOneAsync(1);
+    }
 
     /// <summary>
     /// 获取可信队列,需要确认