RedisIntervalSubscribeBoxno.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. using InitQ.Abstractions;
  2. using InitQ.Attributes;
  3. using InitQ.Cache;
  4. using InitQ.Model;
  5. using Newtonsoft.Json;
  6. using System;
  7. using System.Threading.Tasks;
  8. namespace Ropin.Environmentally.WebScada.Subscribe
  9. {
  10. public class RedisIntervalSubscribeBoxno : IRedisSubscribe
  11. {
  12. private readonly ICacheService _redisService;
  13. public RedisIntervalSubscribeBoxno(ICacheService redisService)
  14. {
  15. _redisService = redisService;
  16. }
  17. [SubscribeInterval("tibos_interval_test_1", 0, "2,3,5,10", 1, "dead_tibos_test_1")]
  18. private async Task SubscribeIntervalTest(string msg)
  19. {
  20. try
  21. {
  22. Console.WriteLine($"A类间隔执行--->当前时间:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} 订阅者A消费消息:{msg}");
  23. //计数器,用于校验任务是否终止
  24. await _redisService.IncrementAsync("tibos_interval_test_count", TimeSpan.FromDays(365));
  25. await _redisService.ListLeftPushAsync<IntervalMessage>("tibos_interval_test_1", JsonConvert.DeserializeObject<IntervalMessage>(msg));
  26. }
  27. catch (Exception ex)
  28. {
  29. await _redisService.SetAsync("tibos_interval_test_error", $"{ex.Message}|{ex.StackTrace}");
  30. }
  31. }
  32. }
  33. }