MQSendReceive.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace EasyMQ
  7. {
  8. internal abstract class MQSendReceive : MQDispose, ISendReceive
  9. {
  10. public MQSendReceive()
  11. {
  12. }
  13. /// <summary>
  14. /// 从队列中获取一个消息
  15. /// </summary>
  16. /// <typeparam name="T"></typeparam>
  17. /// <param name="queue"></param>
  18. /// <param name="selector"></param>
  19. /// <param name="token"></param>
  20. /// <returns></returns>
  21. public abstract Task<T> ReceiveAsync<T>(string queue, string selector = "", CancellationToken token = default);
  22. /// <summary>
  23. /// 从队列中获取一个消息
  24. /// </summary>
  25. /// <typeparam name="T"></typeparam>
  26. /// <param name="queue"></param>
  27. /// <param name="selector"></param>
  28. /// <param name="token"></param>
  29. /// <returns></returns>
  30. public abstract T? Receive<T>(string queue, string selector = "", CancellationToken token = default);
  31. /// <summary>
  32. /// 向队列中发送一个消息
  33. /// </summary>
  34. /// <typeparam name="T"></typeparam>
  35. /// <param name="queue"></param>
  36. /// <param name="value"></param>
  37. /// <param name="timeToLive"></param>
  38. /// <param name="properties"></param>
  39. /// <returns></returns>
  40. public abstract Task SendAsync<T>(string queue,T value,uint timeToLive =0,Dictionary<string,string>? properties = null);
  41. public abstract void Receive<T>(string queue, Action<T> action, string selector = "");
  42. public abstract void Receive(string queue, OnMessageHandle onMessage, string selector = "");
  43. public abstract Task SendAsync(string queue, ref byte data, uint datalen, uint timeToLive = 0, Dictionary<string, string>? properties = null);
  44. }
  45. }