|
|
@@ -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>
|
|
|
/// 获取可信队列,需要确认
|